attim
Registry code: 8158e2b9b717d9da
ATTIM publishes browser-ready work from agents to live links at <slug>.attim.link. Use publish_site for reports, demos, dashboards, and other static artifacts. An interactive page, such as a calculator, dashboard, or form, can also offer WebMCP tools so browser agents can use it: https://attim.link/docs/features/agent-tools. When the user wants a profile, a link in bio, a Linktree-style page, or one page that shows their links and their ATTIM projects, use create_profile (or update_profile if get_public_profile shows they already have one). Ask for their display name, a short bio, an optional…
- endpoint
- https://attim.link/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 attim live?
- Yes — it answered the hub's last check (checked 6h ago). It answered 100% of checks over the last 30 days.
- Is attim free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does attim have?
- 28 tools: fork_site, get_public_profile, get_link_stats, get_insights, get_link_page_template, list_sites, set_variables, create_link_page, ….
- Is attim 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.
90 days 100%· all time 100%
last good check
of 28 tools
- unknown → live
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.
through this hub
successful
what callers paid
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.
fork_site auth-required never probed
Fork an anonymous live ATTIM site into the authenticated account as an owned site.
{ "type": "object", "required": [ "sourceSlug" ], "properties": { "slug": { "type": "string", "maxLength": 63, "minLength": 3 }, "sourceSlug": { "type": "string", "minLength": 1 }, "workspaceId": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }arguments 22 linesget_public_profile auth-required never probed
Get the user's ATTIM profile page: its address, name, bio, avatar, social icons, theme, contrast warnings, links, projects (including which ones visitors cannot see and why), whether the ATTIM badge is shown, and its version. Returns profile: null when they have not set one up yet. For the account's id and email, use get_profile.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesget_link_stats auth-required never probed
Get link-page views, per-link clicks and click-through rate, and why each Smart link is in its current position. Free plans see 7 or 30 days; paid plans can use their analytics range.
{ "type": "object", "required": [ "slug" ], "properties": { "days": { "type": "integer", "maximum": 365, "minimum": 1 }, "slug": { "type": "string", "minLength": 1 } }, "additionalProperties": false }arguments 18 linesget_insights auth-required 6h ago
How the account's sites are doing: page views and visitors from people, AI agents (by name) and other bots counted apart, and top sites, referrers, and countries. Hobby and Team plans.
{ "type": "object", "properties": { "days": { "enum": [ 7, 30, 90 ], "type": "integer", "default": 30 }, "slug": { "type": "string", "maxLength": 2048, "minLength": 1, "description": "One site: its slug or link." }, "workspaceId": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }arguments 25 linesget_link_page_template auth-required 6h ago
Developer option: get the custom link page template (HTML), its theme variables, and the placeholder contract for designing your own link page markup: render links with {{ attim.links.pinned }} and {{ attim.links.smart }}, style them with .attim-link, then publish with publish_site and add links with set_links. For a standard link in bio, use create_profile instead.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_sites auth-required never probed
List ATTIM sites owned by the authenticated account.
{ "type": "object", "properties": { "workspaceId": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }arguments 10 linesset_variables auth-required never probed
Set public variables for an owned ATTIM site. Array entries can include a friendly label without changing their technical placement key.
{ "type": "object", "required": [ "slug", "variables" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "variables": { "anyOf": [ { "type": "object", "additionalProperties": { "type": "string" } }, { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "maxLength": 64, "minLength": 1 }, "label": { "type": "string", "maxLength": 120, "minLength": 1 }, "value": { "type": "string", "maxLength": 10000 } }, "additionalProperties": false } } ] } }, "additionalProperties": false }arguments 51 linescreate_link_page auth-required never probed
Developer option: create a custom link page from the editable HTML template, themed with public variables. For a standard link in bio or Linktree-style page, use create_profile instead. Pinned links (at most 2) stay on top; the rest are Smart links whose click counts are tracked and, on paid plans, automatically reordered by performance.
{ "type": "object", "properties": { "bio": { "type": "string", "maxLength": 500 }, "slug": { "type": "string", "maxLength": 63, "minLength": 3 }, "links": { "type": "array", "items": { "type": "object", "required": [ "label", "url" ], "properties": { "id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "Existing link id from list_links; keeps click history." }, "url": { "type": "string", "maxLength": 2048, "minLength": 1 }, "label": { "type": "string", "maxLength": 120, "minLength": 1 }, "section": { "enum": [ "pinned", "smart" ], "type": "string" }, "disabled": { "type": "boolean" }, "trackingEnabled": { "type": "boolean" } }, "additionalProperties": false }, "maxItems": 50 }, "theme": { "type": "object", "properties": { "font": { "enum": [ "system", "serif", "rounded", "geometric", "mono" ], "type": "string" }, "text": { "type": "string", "maxLength": 64 }, "accent": { "type": "string", "maxLength": 64 }, "background": { "type": "string", "maxLength": 64 }, "buttonText": { "type": "string", "maxLength": 64 }, "buttonBackground": { "type": "string", "maxLength": 64 } }, "additionalProperties": false }, "title": { "type": "string", "maxLength": 120, "minLength": 1 }, "avatarUrl": { "type": "string", "maxLength": 2048 }, "workspaceId": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }arguments 107 linesfinalize_site auth-required never probed
Promote a pending ATTIM site version to live. Anonymous sites require claimToken.
{ "type": "object", "required": [ "slug", "versionId" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "versionId": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "integer", "minimum": 1 } ] }, "claimToken": { "type": "string", "minLength": 8 } }, "additionalProperties": false }arguments 30 linesget_profile auth-required 6h ago
Get the stable profile ID and email of the connected ATTIM account.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineslist_links auth-required never probed
List the links on an owned ATTIM link page: Pinned links first, then Smart links in the owner order, with each link id, destination, and the position visitors currently see. Team viewers can read.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "minLength": 1 } }, "additionalProperties": false }arguments 13 linesrename_version auth-required never probed
Set or clear the name of a retained finalized project version. Pass null to clear. Requires project write access.
{ "type": "object", "required": [ "slug", "versionId", "name" ], "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 120, "minLength": 1 }, { "type": "null" } ] }, "slug": { "type": "string", "minLength": 1 }, "versionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ] } }, "additionalProperties": false }arguments 39 linespreview_version auth-required never probed
Create a private one-use preview link for a retained finalized project version. Open it within 60 seconds; the session lasts 15 minutes.
{ "type": "object", "required": [ "slug", "versionId" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "versionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ] } }, "additionalProperties": false }arguments 26 linesdownload_version auth-required never probed
Get an authenticated MCP resource link to a retained project version ZIP. Read it with resources/read using the same account credentials.
{ "type": "object", "required": [ "slug", "versionId" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "versionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ] } }, "additionalProperties": false }arguments 26 linespublish_site auth-required never probed
Publish a new ATTIM static artifact from inline files. A connected account creates an owned permanent site; a credential-free session creates a temporary site with a claim token. ttlSeconds applies only to anonymous publishes. To keep a temporary site, ask for the user's email and call claim_site with its slug, claimToken, and email.
{ "type": "object", "required": [ "files" ], "properties": { "slug": { "type": "string", "maxLength": 63, "minLength": 3 }, "files": { "type": "array", "items": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "minLength": 1 }, "content": { "type": "string" }, "contentType": { "type": "string", "minLength": 1 }, "contentBase64": { "type": "string" } }, "additionalProperties": false }, "minItems": 1 }, "finalize": { "type": "boolean", "default": true }, "ttlSeconds": { "type": "integer", "minimum": 60 }, "workspaceId": { "type": "integer", "minimum": 1 }, "passwordProtection": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "password": { "type": "string", "maxLength": 512, "minLength": 1 }, "accessDurationSeconds": { "type": "integer", "maximum": 31536000, "minimum": 60 } }, "additionalProperties": false } }, "additionalProperties": false }arguments 72 linesclone_site auth-required never probed
Clone an anonymous live ATTIM site into a new anonymous site. Returns a new live URL and one-time claimToken.
{ "type": "object", "required": [ "sourceSlug" ], "properties": { "sourceSlug": { "type": "string", "minLength": 1 }, "ttlSeconds": { "type": "integer", "minimum": 60 } }, "additionalProperties": false }arguments 17 linesset_password_protection auth-required never probed
Enable, update, or disable password protection for an owned site. A grandfathered anonymous protected site may be updated or disabled with its claimToken; new anonymous protection cannot be enabled.
{ "type": "object", "required": [ "slug", "enabled" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "enabled": { "type": "boolean" }, "password": { "type": "string", "maxLength": 512, "minLength": 1 }, "claimToken": { "type": "string", "minLength": 8 }, "accessDurationSeconds": { "type": "integer", "maximum": 31536000, "minimum": 60 } }, "additionalProperties": false }arguments 31 linescreate_profile auth-required never probed
Set up the user's ATTIM profile: their one public page at <handle>.attim.link, like a link in bio. Every profile has the same structure: name, bio, avatar, and optional social icons; up to 2 pinned links on top; the rest of the links; then a Projects section with the user's own ATTIM sites. Link and project clicks are counted. Ask for their display name, a short bio, an optional https avatar image URL, the links, and the handle they want (custom handles are free on every plan) before calling. The profile is public and can appear in search results unless searchIndexing is false. Customize the look with theme (a preset plus colors, font, and button style); the markup is fixed. Free profiles show a small "Made with ATTIM" badge. Each account has one profile: if get_public_profile returns one, use update_profile instead.
{ "type": "object", "required": [ "name" ], "properties": { "bio": { "type": "string", "maxLength": 500 }, "name": { "type": "string", "maxLength": 80, "minLength": 1, "description": "Display name shown at the top of the page." }, "links": { "type": "array", "items": { "type": "object", "required": [ "label", "url" ], "properties": { "id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "Existing link id from list_links; keeps click history." }, "url": { "type": "string", "maxLength": 2048, "minLength": 1 }, "group": { "anyOf": [ { "type": "string", "maxLength": 60 }, { "type": "null" } ] }, "label": { "type": "string", "maxLength": 120, "minLength": 1 }, "section": { "enum": [ "pinned", "smart" ], "type": "string" }, "disabled": { "type": "boolean" }, "trackingEnabled": { "type": "boolean" } }, "additionalProperties": false }, "maxItems": 50 }, "theme": { "type": "object", "properties": { "font": { "enum": [ "system", "serif", "rounded", "geometric", "mono" ], "type": "string" }, "button": { "type": "object", "properties": { "fill": { "enum": [ "solid", "outline", "soft" ], "type": "string" }, "shape": { "enum": [ "square", "rounded", "pill" ], "type": "string" }, "shadow": { "enum": [ "none", "soft", "hard" ], "type": "string" } }, "additionalProperties": false }, "colors": { "type": "object", "properties": { "text": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "accent": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "background": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "buttonText": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "buttonBackground": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" } }, "additionalProperties": false }, "preset": { "enum": [ "midnight", "paper", "bosphorus", "tulip", "olive", "sunset" ], "type": "string" }, "background": { "type": "object", "properties": { "type": { "enum": [ "solid", "gradient" ], "type": "string" }, "gradient": { "type": "object", "properties": { "to": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "from": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "angle": { "enum": [ 0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345 ], "type": "integer" } }, "additionalProperties": false } }, "additionalProperties": false } }, "description": "A preset plus optional overrides. Uploaded background images are set from the dashboard.", "additionalProperties": false }, "handle": { "type": "string", "maxLength": 63, "minLength": 3, "description": "The address: <handle>.attim.link. Lowercase letters, digits, and hyphens. A random one is used if omitted." }, "locale": { "enum": [ "en", "tr" ], "type": "string", "description": "Language of the page text, for screen readers and search engines." }, "socials": { "type": "array", "items": { "type": "object", "required": [ "network", "url" ], "properties": { "url": { "type": "string", "maxLength": 2048 }, "network": { "enum": [ "instagram", "tiktok", "youtube", "x", "threads", "bluesky", "facebook", "linkedin", "github", "twitch", "spotify", "discord", "telegram", "whatsapp", "pinterest", "snapchat", "medium", "patreon", "website", "email" ], "type": "string" } }, "additionalProperties": false }, "maxItems": 8, "description": "Social icons under the bio. email takes an email address." }, "projects": { "type": "array", "items": { "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "maxLength": 63, "minLength": 1 }, "label": { "anyOf": [ { "type": "string", "maxLength": 120 }, { "type": "null" } ], "description": "Shown instead of the site title." } }, "additionalProperties": false }, "maxItems": 24, "description": "The user's own ATTIM sites to show on the profile, in order." }, "avatarUrl": { "type": "string", "maxLength": 2048, "description": "Public https image URL. Owners can upload an image from the dashboard instead." }, "searchIndexing": { "type": "boolean", "description": "Let search engines list the profile. Defaults to true." } }, "additionalProperties": false }arguments 311 linesset_links auth-required never probed
Replace every link on an owned ATTIM link page. Call list_links first and pass existing ids back to keep their click history; links you omit are deleted. Array order is the owner order within each section; at most 2 links may be pinned and 50 in total. Links that share a group show together under its name, after links without one; null removes the group. Only public http(s) destinations are accepted. trackingEnabled:false links go straight to the destination, are not counted, and keep their position.
{ "type": "object", "required": [ "slug", "links" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "links": { "type": "array", "items": { "type": "object", "required": [ "label", "url" ], "properties": { "id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "Existing link id from list_links; keeps click history." }, "url": { "type": "string", "maxLength": 2048, "minLength": 1 }, "group": { "anyOf": [ { "type": "string", "maxLength": 60 }, { "type": "null" } ] }, "label": { "type": "string", "maxLength": 120, "minLength": 1 }, "section": { "enum": [ "pinned", "smart" ], "type": "string" }, "disabled": { "type": "boolean" }, "trackingEnabled": { "type": "boolean" } }, "additionalProperties": false }, "maxItems": 50 }, "expectedVersion": { "type": "integer", "minimum": 0 } }, "additionalProperties": false }arguments 72 linesrestore_version auth-required never probed
Copy a retained project version into a new live version. Requires write access and the current version ID from list_versions to prevent stale restores.
{ "type": "object", "required": [ "slug", "versionId", "expectedCurrentVersionId" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "versionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ] }, "expectedCurrentVersionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ] } }, "additionalProperties": false }arguments 39 linesupdate_profile auth-required never probed
Update the user's ATTIM profile. Omitted fields stay unchanged. socials and theme replace the stored values; avatarUrl null removes the avatar. handle changes the address (on the Free plan, once a week; the old address redirects for 30 days). links replaces every link, so pass the ids from get_public_profile to keep click history; links you omit are deleted. projects replaces the list of the user's own sites shown on the profile, in order (see list_sites for their slugs). Pass expectedVersion from get_public_profile to avoid overwriting a concurrent edit.
{ "type": "object", "properties": { "bio": { "type": "string", "maxLength": 500 }, "name": { "type": "string", "maxLength": 80, "minLength": 1 }, "links": { "type": "array", "items": { "type": "object", "required": [ "label", "url" ], "properties": { "id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "Existing link id from list_links; keeps click history." }, "url": { "type": "string", "maxLength": 2048, "minLength": 1 }, "group": { "anyOf": [ { "type": "string", "maxLength": 60 }, { "type": "null" } ] }, "label": { "type": "string", "maxLength": 120, "minLength": 1 }, "section": { "enum": [ "pinned", "smart" ], "type": "string" }, "disabled": { "type": "boolean" }, "trackingEnabled": { "type": "boolean" } }, "additionalProperties": false }, "maxItems": 50 }, "theme": { "type": "object", "description": "Same fields as create_profile theme; replaces the stored theme." }, "handle": { "type": "string", "maxLength": 63, "minLength": 3 }, "locale": { "enum": [ "en", "tr" ], "type": "string" }, "socials": { "type": "array", "items": { "type": "object" }, "maxItems": 8, "description": "Same items as create_profile socials ({ network, url }); replaces the stored icons." }, "projects": { "type": "array", "items": { "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "maxLength": 63, "minLength": 1 }, "label": { "anyOf": [ { "type": "string", "maxLength": 120 }, { "type": "null" } ], "description": "Shown instead of the site title." } }, "additionalProperties": false }, "maxItems": 24, "description": "The user's own ATTIM sites to show on the profile, in order." }, "avatarUrl": { "anyOf": [ { "type": "string", "maxLength": 2048 }, { "type": "null" } ] }, "expectedVersion": { "type": "integer", "minimum": 0 } }, "additionalProperties": false }arguments 139 linesdelete_site auth-required never probed
Delete an owned ATTIM site, or an anonymous site when claimToken is supplied.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "claimToken": { "type": "string", "minLength": 8 } }, "additionalProperties": false }arguments 17 linesrename_site auth-required never probed
Rename an owned ATTIM site by changing its slug. Requires a paid (Hobby or Team) account; the previous slug redirects to the new one for a grace period.
{ "type": "object", "required": [ "slug", "newSlug" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "newSlug": { "type": "string", "maxLength": 63, "minLength": 3 } }, "additionalProperties": false }arguments 19 lineslist_versions auth-required never probed
List the latest 10 retained finalized versions of an owned ATTIM project, including names and the current version ID. Team viewers can read history.
{ "type": "object", "required": [ "slug" ], "properties": { "slug": { "type": "string", "minLength": 1 } }, "additionalProperties": false }arguments 13 linesclaim_site auth-required never probed
Keep a temporary ATTIM site so it no longer expires. Pass the slug and claimToken returned by publish_site or clone_site. Without a connected account, also pass the email the user gave you: ATTIM emails them a link that keeps the site and creates their free ATTIM account. Without an email, the user is asked to connect their ATTIM account here instead. With a connected account, the site moves into it right away.
{ "type": "object", "required": [ "slug", "claimToken" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "email": { "type": "string", "maxLength": 320, "minLength": 3, "description": "The user's own email address, when no ATTIM account is connected. ATTIM emails it a link that keeps the site." }, "claimToken": { "type": "string", "minLength": 8 }, "workspaceId": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }arguments 28 linesupdate_site auth-required never probed
Upload a new version for an owned ATTIM site, or an anonymous site when claimToken is supplied, from inline file contents. This replaces every file; to change part of a live site, use read_site and edit_site instead.
{ "type": "object", "required": [ "slug", "files" ], "properties": { "slug": { "type": "string", "minLength": 1 }, "files": { "type": "array", "items": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "minLength": 1 }, "content": { "type": "string" }, "contentType": { "type": "string", "minLength": 1 }, "contentBase64": { "type": "string" } }, "additionalProperties": false }, "minItems": 1 }, "finalize": { "type": "boolean", "default": true }, "claimToken": { "type": "string", "minLength": 8 } }, "additionalProperties": false }arguments 49 linesread_site auth-required never probed
Open a site published before, in this chat or another: its live versionId, file list, and the text of its HTML, CSS and JS files, in pages. Pass the slug or the site's link (list_sites lists the account's sites); a temporary site also needs its claimToken. search finds text in big files; path and offset read the next page of one file. Call this before edit_site.
{ "type": "object", "required": [ "slug" ], "properties": { "path": { "type": "string", "minLength": 1, "description": "Read one file, such as index.html." }, "slug": { "type": "string", "maxLength": 2048, "minLength": 1, "description": "The site slug, or its link such as https://<slug>.attim.link/." }, "offset": { "type": "integer", "minimum": 0, "description": "Character offset in path to start from, from a previous read_site." }, "search": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Find this text (case-insensitive) instead of reading; returns each match with its offset and surrounding text." }, "maxChars": { "type": "integer", "default": 50000, "maximum": 100000, "minimum": 1000 }, "claimToken": { "type": "string", "minLength": 8 } }, "additionalProperties": false }arguments 41 linesedit_site auth-required never probed
Change a live site at the same link with targeted edits instead of re-uploading. Call read_site first and pass its versionId as baseVersionId. Put every requested change in this one call: only the last 10 versions are kept. Each replacement swaps an exact oldText, copied from read_site and found once in the file unless replaceAll is true, for newText; writes add or overwrite whole files; deletes remove files. Everything applies together or not at all and goes live as a new version named versionName, which can be restored. Keep {{ vars.* }} and {{ attim.links.* }} placeholders as they are. A temporary site needs its claimToken. Use update_site only to replace the whole site.
{ "type": "object", "required": [ "slug", "baseVersionId" ], "properties": { "slug": { "type": "string", "maxLength": 2048, "minLength": 1, "description": "The site slug, or its link." }, "writes": { "type": "array", "items": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string", "minLength": 1 }, "content": { "type": "string" }, "contentType": { "type": "string", "minLength": 1 }, "contentBase64": { "type": "string" } }, "additionalProperties": false }, "maxItems": 20 }, "deletes": { "type": "array", "items": { "type": "string", "minLength": 1 }, "maxItems": 50 }, "claimToken": { "type": "string", "minLength": 8 }, "versionName": { "type": "string", "maxLength": 120, "minLength": 1, "description": "A short name for the new version, like \"Added Q3 numbers\"." }, "replacements": { "type": "array", "items": { "type": "object", "required": [ "path", "oldText", "newText" ], "properties": { "path": { "type": "string", "minLength": 1 }, "newText": { "type": "string", "description": "The text to put in its place; empty removes it." }, "oldText": { "type": "string", "minLength": 1, "description": "The exact current text, copied from read_site." }, "replaceAll": { "type": "boolean", "default": false, "description": "Change every occurrence instead of requiring exactly one." } }, "additionalProperties": false }, "maxItems": 50 }, "baseVersionId": { "anyOf": [ { "type": "string", "pattern": "^[1-9][0-9]*$" }, { "type": "integer", "minimum": 1 } ], "description": "The versionId read_site returned. If the site changed since, the edit is refused." } }, "additionalProperties": false }arguments 107 lines
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.
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.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - 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. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id8158e2b9b717d9da.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/8158e2b9b717d9da/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/8158e2b9b717d9da?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.
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.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- 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.