_ registry / mcp streamable-http · checked 1h ago

zaps

https://api.zaps.design

Registry code: e0cb0bf96e327ff3

api record

Zaps turns someone's photos into finished social-media designs. Call create_designs with a search query you have written, the photo URLs and the words to put on the design: it finds matching templates, renders each with those photos and your copy, and returns finished images plus a link to keep editing each one. YOU write the query — the catalogue describes each template as Title Case phrases separated by commas, and a query in that register matches markedly better than a sentence: "Birthday Party, Friends, Celebration, Confetti, Party Invite". Look at the photos you were given and let what…

endpoint
https://api.zaps.design/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is zaps live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is zaps free to use?
Yes — the hub reached it with no key and no payment.
What tools does zaps have?
4 tools: upload_images, create_designs, fill_template, search_templates.
Is zaps safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
98ms

last good check

priced tools
0

of 4 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 4 tools
4 never probed 0 of 4 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • upload_images unknown never probed

    Call this FIRST when the photos are on the caller's machine rather than already on the web — our renderer fetches over the network and cannot read a local path. Simplest way: read each file and pass it in `files` as base64; the reply gives you a publicUrl per photo to hand straight to create_designs, with nothing else to run. If you would rather upload the bytes yourself, pass `count` instead and you get presigned links to PUT to. Costs nothing either way.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1,
          "description": "Only when uploading the bytes yourself: how many links to mint."
        },
        "files": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "data"
            ],
            "properties": {
              "data": {
                "type": "string",
                "description": "The image file's bytes, base64 encoded."
              },
              "mimeType": {
                "type": "string",
                "description": "e.g. image/jpeg or image/png."
              }
            }
          },
          "description": "The photos themselves, base64 encoded. We store them and hand back a url each. Use this unless you have a reason not to."
        },
        "mimeType": {
          "type": "string",
          "description": "The images' media type, e.g. image/png or image/jpeg."
        }
      }
    }
    arguments 35 lines
  • create_designs unknown never probed

    The whole job in one call: give it a SEARCH QUERY you have written, your photo URLs and the words you want on the design, and it finds templates that fit, renders each with your photos and your copy, and returns several finished designs to choose between. Use this when someone wants options — it is search and render together, so there is no need to call search_templates and fill_template yourself. Templates that hold every photo you supplied are preferred, so pass all of them. Photos attached in the conversation go in `photos`; photos already on the web go in `images`. Each returned design spends one agentic token.

    mcp-tool

    {
      "type": "object",
      "required": [
        "brief"
      ],
      "properties": {
        "text": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The words to put ON the designs — headline first, then any supporting lines. WRITE THESE YOURSELF from the brief: a template ships with the designer's placeholder copy, and leaving it means a coffee shop opening goes out reading whatever they typed. Keep a headline to a few words; templates lay out short lines."
        },
        "brief": {
          "type": "string",
          "description": "The SEARCH QUERY for the template catalogue — you write it, we do not build it from anything else. Title Case phrases separated by commas, the way the catalogue describes itself: \"Birthday Party, Friends, Celebration, Confetti, Party Invite\". Five or six covering occasion, subject and mood. Written this way it scores about 0.11 higher than the same intent as a sentence, and a single word is worst of all. If you were given photos, look at them and let what you see inform the phrases."
        },
        "count": {
          "type": "integer",
          "maximum": 10,
          "minimum": 1,
          "description": "How many finished designs to return. Default 5, at most 10."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Publicly reachable image URLs, in placement order."
        },
        "photos": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "download_url",
              "file_id"
            ],
            "properties": {
              "file_id": {
                "type": "string"
              },
              "file_name": {
                "type": "string"
              },
              "mime_type": {
                "type": "string"
              },
              "download_url": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Photos the person attached in this conversation, in placement order. Use this OR images, not both."
        },
        "segment": {
          "type": "string",
          "description": "Optional shape filter, e.g. story or carousel."
        }
      }
    }
    arguments 62 lines
  • fill_template unknown never probed

    Render a finished image: give it a template id from search_templates and the photo URLs to place, and it returns the rendered design. Photos are placed into the template's image slots in the order given, so pass them in the order you want them to appear. Photos attached in the conversation go in `photos`; photos already on the web go in `images`. Each render spends one agentic token.

    mcp-tool

    {
      "type": "object",
      "required": [
        "coverId"
      ],
      "properties": {
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Publicly reachable image URLs, in placement order."
        },
        "photos": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "download_url",
              "file_id"
            ],
            "properties": {
              "file_id": {
                "type": "string"
              },
              "file_name": {
                "type": "string"
              },
              "mime_type": {
                "type": "string"
              },
              "download_url": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Photos the person attached in this conversation, in placement order. Use this OR images, not both."
        },
        "coverId": {
          "type": "string",
          "description": "Template id, from a search_templates result."
        }
      }
    }
    arguments 45 lines
  • search_templates unknown 1h ago

    Find design templates. YOU write the query, and its wording decides the match: the catalogue describes each template as Title Case phrases separated by commas, and a query in that same register scores about 0.11 higher than the same intent written as a sentence. Write five or six phrases covering the occasion, the subject and the mood — "Coffee Shop, Cafe Vibes, Grand Opening, Latte Art, Cafe Aesthetic" rather than "grand opening of a neighbourhood coffee shop". A single word is worst of all. Returns templates with an id to fill and a link a person can open to keep editing.

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1,
          "description": "How many templates to return. Default 5."
        },
        "query": {
          "type": "string",
          "description": "Title Case phrases separated by commas, the way the catalogue describes itself. Five or six covering occasion, subject and mood."
        },
        "segment": {
          "type": "string",
          "description": "Optional shape filter, e.g. story or carousel."
        }
      }
    }
    arguments 22 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id e0cb0bf96e327ff3.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/e0cb0bf96e327ff3/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/e0cb0bf96e327ff3/badge.svg)](https://brick.blue/agent/e0cb0bf96e327ff3?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
80%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.