protogrid

Search / io.github.entire-vc/spark

Spark - AI Assets Marketplace

R0· no sign-in

Search and fetch AI agents, skills, prompts and MCP connectors from the Spark marketplace.

v4.0.4 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality73needs work
Trust97of 100
Uptime, 30 days100%
Latency p50980 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "spark": {
      "type": "http",
      "url": "https://spark.entire.vc/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
claude mcp add --transport http spark https://spark.entire.vc/mcp/ --header "X-API-Key: ${X_API_KEY}"
[mcp_servers.spark]
url = "https://spark.entire.vc/mcp/"
env_http_headers = { "X-API-Key" = "X_API_KEY" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "spark": {
      "type": "remote",
      "url": "https://spark.entire.vc/mcp/",
      "enabled": true,
      "headers": {
        "X-API-Key": "{env:X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "spark": {
      "type": "http",
      "url": "https://spark.entire.vc/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=spark&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc3BhcmsuZW50aXJlLnZjL21jcC8iLCJoZWFkZXJzIjp7IlgtQVBJLUtleSI6IiR7WF9BUElfS0VZfSJ9fQ%3D%3D"
}
{
  "servers": {
    "spark": {
      "type": "http",
      "url": "https://spark.entire.vc/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "spark": {
      "httpUrl": "https://spark.entire.vc/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}"
      }
    }
  }
}
extensions:
  "spark":
    enabled: true
    name: "spark"
    type: streamable_http
    uri: "https://spark.entire.vc/mcp/"
    headers:
      "X-API-Key": "${X_API_KEY}"
    timeout: 300

Placeholders to fill from your own secret store: ${X_API_KEY}. The registry never accepts secret values.

Quality 73 / 100needs work

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations6 of 6 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_categories (destructiveHint); report_outcome (openWorldHint); list_popular (destructiveHint); …
  • pass
    tools.token_costabout 1,973 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes18 tool changes in 30 days
  • fail
    stability.rug_pull12 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

6 tools, about 1,973 tokens to load them all · tool set 240c9dfb3c0a · tools last changed 2026-10-02 · checked 2026-10-20 13:49 UTC

Tool changes

  • list_categorieschangeddescriptionmeaning changed
    before

    List available categories (domains and AI tags) in the Spark marketplace. Returns the domain slugs that search_assets accepts as its `domain` filter, and the AI tags, as a taxonomy of the catalog. Example: list_categories()

    after · 42% of words in common

    List available categories (domains and AI tags) in the Spark marketplace. For when domain filter values or taxonomy are needed; search_assets returns assets rather than categories. Takes no parameters. Returns Markdown lists of AI tag names/slugs and domain names/slugs grouped by parent category; domain slugs are accepted by search_assets' domain filter. AI tags are not a search_assets filter. Public catalog lookup, no login or download recorded. For example, list_categories().

  • list_popularchangeddescription, input schemameaning changed
    before

    List the most popular Spark assets by download count, optionally filtered by type. Takes no search text; it returns the current top of the catalog by downloads.

    after · 33% of words in common

    List the most popular Spark assets by download count, optionally filtered by type. For when browsing without a text query; search_assets finds text matches. Returns numbered summaries with outcomes, price, tags and URLs, or 'No assets found.' Downloads measure acquisitions, not successful applications or ratings. Public catalog lookup, no login or download recorded. For example, list_popular(type='skill', limit=5).

  • report_outcomechangeddescription, input schema
    before

    Records the result of applying an asset that was fetched with get_asset_content: applied as is, applied with changes, broke, or not applicable. The report is tied to the application_id that get_asset_content returned; submitting the same application_id again updates the report. Reports made with an API key are counted; anonymous ones are stored as unverified. Fields `task`, `note`, `changed_what`, `failed_at`, `expected`, `got` are published on the asset's public page on spark.entire.vc, visible to any visitor. Do not include client data, private paths, keys, emails or URLs with tokens. Your identity is never shown on that page. Example: report_outcome(application_id='<from get_asset_content>', result='applied_with_changes', task='add a rate limiter to the API', changed_what='swapped the fixed window for a token bucket').

    after · 61% of words in common

    Records the result of applying a fetched Spark asset: applied as is, changed, broke, or not applicable. For when the outcome is known and an application_id from get_asset_content is available, rather than a star rating. Mismatched user/session receipts are rejected; asset owners cannot report on their own assets. Submitting the same application_id updates the report. Authenticated reports count, but team reports do not affect rankings; anonymous reports are unverified. Returns a saved/updated confirmation, or a validation/receipt error. Fields `task`, `note`, `changed_what`, `failed_at`, `expected`, `got` are published on the asset's public page on spark.entire.vc, visible to any visitor. Do not include client data, private paths, keys, emails or URLs with tokens. Your identity is never shown on that page. Example: report_outcome(application_id='<receipt>', result='applied_as_is', task='add a rate limiter').

  • get_asset_contentchangeddescription, input schemameaning changed
    before

    Get the raw content of a Spark asset (prompt text, skill instructions, agent config) — the actual text to apply, not just a description of it. Takes a slug. Unlike search_assets and get_asset, this counts as a download/acquisition event, and each call may return different content if the asset was updated. Paid assets require authentication: a Spark API key (X-API-Key header) or a Bearer token in the MCP client configuration. The response ends with an `application_id` line that identifies this fetch; report_outcome takes it as its `application_id` argument.

    after · 37% of words in common

    Get the raw content of a Spark asset (prompt text, skill instructions, agent config) — the actual text to apply, not just a description of it. For when a known asset's content is needed for application; get_asset provides details without acquisition. Each successful fetch records a download/acquisition; repeated calls create new receipts and content may change after updates. Free content needs no login. Paid content requires a Spark API key (X-API-Key) or Bearer token and prior purchase or ownership; this tool makes no purchase. Returns content and an application_id for report_outcome, or a not-found/access message. Content may be a source link rather than embedded text. For example, get_asset_content(slug='vb-seo-expert').

  • get_assetchangeddescription, input schemameaning changed
    before

    Get full details of a Spark asset by its slug — description, metadata, outcome reports, bundled files and the URL on spark.entire.vc. Takes a slug, for example from a search result, a popular list or a link. Returns the full picture of the asset. It does not return the prompt/skill/agent text itself; get_asset_content returns that.

    after · 39% of words in common

    Get full details of a Spark asset by its slug — description, metadata, outcome reports, bundled files and the URL on spark.entire.vc. For when a known slug needs inspection before acquisition. Returns Markdown details, which may include embedded content; get_asset_content obtains the raw content and a receipt. Public catalog lookup, no login or download recorded. Missing or unavailable slugs return a not-found message. For example, get_asset(slug='vb-seo-expert').

  • search_assetschangeddescription, input schemameaning changed
    before

    Search the Spark AI assets marketplace for agents, skills, prompts, prompt chains, MCP connectors and bundles. Finds assets by text query, for when the slug is not known. Returns a numbered list of short summaries: title, type, downloads, outcome summary, price, tags and the asset's URL on spark.entire.vc.

    after · 40% of words in common

    Search the Spark AI assets marketplace for agents, skills, prompts, prompt chains, MCP connectors and bundles. For when a text query is available but the slug is not known; get_asset describes a known slug. Returns numbered summaries with type, downloads, outcomes, price, tags and URL, or a no-results message. No login required; no acquisition is made. Unmatched nonempty queries may be recorded as unmet catalog needs. A nonempty job ranks text matches by task fit, even with a non-combo sort. For example, search_assets(query='rate limiting', job='add a rate limiter', limit=5).

  • list_categorieschangeddescriptionmeaning changed
    before

    List available categories (domains and AI tags) in the Spark marketplace. Call this to discover valid values for search_assets' `domain` filter, or to browse the catalog's taxonomy before searching. Example: list_categories()

    after · 47% of words in common

    List available categories (domains and AI tags) in the Spark marketplace. Returns the domain slugs that search_assets accepts as its `domain` filter, and the AI tags, as a taxonomy of the catalog. Example: list_categories()

  • list_popularchangeddescriptionmeaning changed
    before

    List the most popular Spark assets by download count, optionally filtered by type. Use this to browse what's trending when you don't have a specific search term — for a targeted lookup, use search_assets instead.

    after · 31% of words in common

    List the most popular Spark assets by download count, optionally filtered by type. Takes no search text; it returns the current top of the catalog by downloads.

  • report_outcomechangeddescription, input schema
    before

    Report what happened when you applied an asset you fetched with get_asset_content. Call it once you know: applied as is, applied with changes, broke, or not applicable. The next agent choosing this asset reads the outcomes in search results. Reports made with an API key count; anonymous ones are stored as unverified. Calling again with the same application_id updates your report. Fields `task`, `note`, `changed_what`, `failed_at`, `expected`, `got` are shown to the asset's author. Do not include client data, private paths, keys, emails or URLs with tokens. Your identity is never shown to the author. Example: report_outcome(application_id='<from get_asset_content>', result='applied_with_changes', task='add a rate limiter to the API', changed_what='swapped the fixed window for a token bucket').

    after · 65% of words in common

    Records the result of applying an asset that was fetched with get_asset_content: applied as is, applied with changes, broke, or not applicable. The report is tied to the application_id that get_asset_content returned; submitting the same application_id again updates the report. Reports made with an API key are counted; anonymous ones are stored as unverified. Fields `task`, `note`, `changed_what`, `failed_at`, `expected`, `got` are published on the asset's public page on spark.entire.vc, visible to any visitor. Do not include client data, private paths, keys, emails or URLs with tokens. Your identity is never shown on that page. Example: report_outcome(application_id='<from get_asset_content>', result='applied_with_changes', task='add a rate limiter to the API', changed_what='swapped the fixed window for a token bucket').

  • get_asset_contentchangeddescription
    before

    Get the raw content of a Spark asset (prompt text, skill instructions, agent config) — the actual text to apply, not just a description of it. Call this once you've picked a slug (via search_assets/get_asset) and are ready to use the asset. Unlike search_assets/get_asset, this counts as a download/acquisition event, and each call may return different content if the asset was updated. For paid assets, authentication is required — add your Spark API key (X-API-Key header) or a Bearer token to your MCP client configuration. The response ends with an `application_id`; pass it to report_outcome once you know whether the asset worked.

    after · 70% of words in common

    Get the raw content of a Spark asset (prompt text, skill instructions, agent config) — the actual text to apply, not just a description of it. Takes a slug. Unlike search_assets and get_asset, this counts as a download/acquisition event, and each call may return different content if the asset was updated. Paid assets require authentication: a Spark API key (X-API-Key header) or a Bearer token in the MCP client configuration. The response ends with an `application_id` line that identifies this fetch; report_outcome takes it as its `application_id` argument.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-14d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://spark.entire.vc/mcp/ streamable-httpnoneyes100%980 ms2026-07-282026-10-20

Tools (6)

get_assetread-onlyGet full details of a Spark asset by its slug — description, metadata, outcome reports, bundled files and the URL on spark.entire.vc. For when a known slug needs inspection before acquisition. Returns Markdown details, which may include embedded content; get_asset_content obtains the raw content and a receipt. Public catalog lookup, no login or download recorded. Missing or unavailable slugs return a not-found message. For example, get_asset(slug='vb-seo-expert').
get_asset_contentGet the raw content of a Spark asset (prompt text, skill instructions, agent config) — the actual text to apply, not just a description of it. For when a known asset's content is needed for application; get_asset provides details without acquisition. Each successful fetch records a download/acquisition; repeated calls create new receipts and content may change after updates. Free content needs no login. Paid content requires a Spark API key (X-API-Key) or Bearer token and prior purchase or ownership; this tool makes no purchase. Returns content and an application_id for report_outcome, or a not-found/access message. Content may be a source link rather than embedded text. For example, get_asset_content(slug='vb-seo-expert').
list_categoriesread-onlyList available categories (domains and AI tags) in the Spark marketplace. For when domain filter values or taxonomy are needed; search_assets returns assets rather than categories. Takes no parameters. Returns Markdown lists of AI tag names/slugs and domain names/slugs grouped by parent category; domain slugs are accepted by search_assets' domain filter. AI tags are not a search_assets filter. Public catalog lookup, no login or download recorded. For example, list_categories().
list_popularread-onlyList the most popular Spark assets by download count, optionally filtered by type. For when browsing without a text query; search_assets finds text matches. Returns numbered summaries with outcomes, price, tags and URLs, or 'No assets found.' Downloads measure acquisitions, not successful applications or ratings. Public catalog lookup, no login or download recorded. For example, list_popular(type='skill', limit=5).
report_outcomeRecords the result of applying a fetched Spark asset: applied as is, changed, broke, or not applicable. For when the outcome is known and an application_id from get_asset_content is available, rather than a star rating. Mismatched user/session receipts are rejected; asset owners cannot report on their own assets. Submitting the same application_id updates the report. Authenticated reports count, but team reports do not affect rankings; anonymous reports are unverified. Returns a saved/updated confirmation, or a validation/receipt error. Fields `task`, `note`, `changed_what`, `failed_at`, `expected`, `got` are published on the asset's public page on spark.entire.vc, visible to any visitor. Do not include client data, private paths, keys, emails or URLs with tokens. Your identity is never shown on that page. Example: report_outcome(application_id='<receipt>', result='applied_as_is', task='add a rate limiter').
search_assetsread-onlySearch the Spark AI assets marketplace for agents, skills, prompts, prompt chains, MCP connectors and bundles. For when a text query is available but the slug is not known; get_asset describes a known slug. Returns numbered summaries with type, downloads, outcomes, price, tags and URL, or a no-results message. No login required; no acquisition is made. Unmatched nonempty queries may be recorded as unmet catalog needs. A nonempty job ranks text matches by task fit, even with a non-combo sort. For example, search_assets(query='rate limiting', job='add a rate limiter', limit=5).

Schemas: list_tools.

Similar MCP servers

More from io.github.entire-vc

Official server.json
{
  "name": "io.github.entire-vc/spark",
  "title": "Spark - AI Assets Marketplace",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://spark.entire.vc/mcp/",
      "type": "streamable-http",
      "headers": [
        {
          "name": "X-API-Key",
          "isSecret": true,
          "description": "Optional Spark API key (free, spark.entire.vc/profile, MCP Access tab). Without it the server works anonymously."
        }
      ]
    }
  ],
  "version": "4.0.4",
  "repository": {
    "url": "https://github.com/entire-vc/evc-spark-mcp",
    "source": "github"
  },
  "websiteUrl": "https://spark.entire.vc",
  "description": "Search and fetch AI agents, skills, prompts and MCP connectors from the Spark marketplace."
}