Server definition
- Hash
- sha256:d46cdd81c229c7d31e3bffb21e23ce21912d9d9ec32e0f206de913da2c115220
- What it is
- What a remote MCP server returned when asked what it offers: 6 tools
The blob, as servednamed by its sha256
{
"instructions": "Search and discover AI assets (agents, skills, prompts, MCP connectors, bundles) from the Spark marketplace at spark.entire.vc. search_assets finds assets, get_asset returns their full details, and get_asset_content returns the prompt or skill text together with an application_id. report_outcome records the result of applying an asset; the report text is published on the asset's public page.",
"tools": [
{
"description": "Get full details of a Spark asset by its slug — description, metadata, outcome\nreports, bundled files and the URL on spark.entire.vc.\n\nFor when a known slug needs inspection before acquisition. Returns Markdown\ndetails, which may include embedded content; get_asset_content obtains the raw\ncontent and a receipt. Public catalog lookup, no login or download recorded.\nMissing or unavailable slugs return a not-found message.\n\nFor example, get_asset(slug='vb-seo-expert').",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Exact asset slug from a search result or Spark URL, e.g. 'vb-seo-expert'; not a URL or asset ID.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_asset",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Get the raw content of a Spark asset (prompt text, skill instructions, agent config) —\nthe actual text to apply, not just a description of it.\n\nFor when a known asset's content is needed for application; get_asset provides\ndetails without acquisition. Each successful fetch records a download/acquisition;\nrepeated calls create new receipts and content may change after updates.\nFree content needs no login. Paid content requires a Spark API key (X-API-Key)\nor Bearer token and prior purchase or ownership; this tool makes no purchase.\nReturns content and an application_id for report_outcome, or a not-found/access\nmessage. Content may be a source link rather than embedded text.\n\nFor example, get_asset_content(slug='vb-seo-expert').",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Exact asset slug from a search result or Spark URL, e.g. 'vb-seo-expert'; not a URL or asset ID.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_asset_content",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List available categories (domains and AI tags) in the Spark marketplace.\n\nFor when domain filter values or taxonomy are needed; search_assets returns\nassets rather than categories. Takes no parameters. Returns Markdown lists\nof AI tag names/slugs and domain names/slugs grouped by parent category;\ndomain slugs are accepted by search_assets' domain filter. AI tags are not a\nsearch_assets filter. Public catalog lookup, no login or download recorded.\n\nFor example, list_categories().",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_categories",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List the most popular Spark assets by download count, optionally filtered by type.\n\nFor when browsing without a text query; search_assets finds text matches.\nReturns numbered summaries with outcomes, price, tags and URLs, or 'No assets\nfound.' Downloads measure acquisitions, not successful applications or ratings.\nPublic catalog lookup, no login or download recorded.\n\nFor example, list_popular(type='skill', limit=5).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"default": 10,
"description": "Maximum results; clamped to 1-20, default 10.",
"type": "integer"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional asset type: agent, skill, prompt, prompt_chain, mcp_connector or bundle; omitted means all types."
}
},
"type": "object"
},
"name": "list_popular",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "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.\n\nFields `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.\n\nExample: report_outcome(application_id='<receipt>', result='applied_as_is', task='add a rate limiter').",
"inputSchema": {
"additionalProperties": false,
"properties": {
"application_id": {
"description": "The application_id at the end of the get_asset_content response.",
"type": "string"
},
"changed_what": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Required for applied_with_changes: what changed (≤ 200 characters); ignored for other results."
},
"expected": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Required for not_applicable: what was sought (≤ 200 characters); ignored for other results."
},
"failed_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Required for broke: failed step, tool or command and error class (≤ 200 characters); ignored for other results."
},
"got": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Required for not_applicable: what the asset actually does (≤ 200 characters); ignored for other results."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional model name; trimmed to 100 characters. Shown, never ranked."
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional extra context (≤ 300 characters); published on the asset page."
},
"result": {
"description": "applied_as_is: applied without edits, task solved. applied_with_changes: had to edit it, then solved (requires changed_what). broke: tried to apply and it failed (requires failed_at). not_applicable: read it and did not apply, it does something else (requires expected and got).",
"enum": [
"applied_as_is",
"applied_with_changes",
"broke",
"not_applicable"
],
"type": "string"
},
"task": {
"description": "Required nonempty task attempted, one phrase (≤ 200 characters); published on the asset page.",
"type": "string"
}
},
"required": [
"application_id",
"result",
"task"
],
"type": "object"
},
"name": "report_outcome",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Search the Spark AI assets marketplace for agents, skills, prompts, prompt chains, MCP connectors and bundles.\n\nFor when a text query is available but the slug is not known; get_asset describes\na known slug. Returns numbered summaries with type, downloads, outcomes, price,\ntags and URL, or a no-results message. No login required; no acquisition is made.\nUnmatched nonempty queries may be recorded as unmet catalog needs. A nonempty\njob ranks text matches by task fit, even with a non-combo sort.\n\nFor example, search_assets(query='rate limiting', job='add a rate limiter', limit=5).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional domain slug from list_categories, e.g. 'development'; omitted means all domains."
},
"job": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional task, e.g. 'review Python code'; a nonempty value enables job-based ranking regardless of sort."
},
"limit": {
"default": 10,
"description": "Maximum results; clamped to 1-50, default 10.",
"type": "integer"
},
"query": {
"description": "Text matched against titles and descriptions, e.g. 'rate limiting'; empty text browses the catalog.",
"type": "string"
},
"sort": {
"default": "combo",
"description": "combo (default): quality, ratings and outcomes; popular: downloads; newest: creation date; rating: average rating. Invalid values fall back to combo; job enables ranking for any sort.",
"type": "string"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional asset type: agent, skill, prompt, prompt_chain, mcp_connector or bundle; omitted means all types."
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_assets",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d46cdd81c229c7d31e3bffb21e23ce21912d9d9ec32e0f206de913da2c115220 | sha256sum