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

attim

https://attim.link

Registry code: 8158e2b9b717d9da

api record

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 it live, free and safe measured by this hub
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.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
526ms

last good check

priced tools
0

of 28 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

_ what it can do 28 tools
28 auth-required 28 of 28 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.

  • fork_site auth-required never probed

    Fork an anonymous live ATTIM site into the authenticated account as an owned site.

    mcp-tool

    {
      "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 lines
  • get_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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "days": {
          "type": "integer",
          "maximum": 365,
          "minimum": 1
        },
        "slug": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_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.

    mcp-tool

    {
      "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 lines
  • get_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.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • list_sites auth-required never probed

    List ATTIM sites owned by the authenticated account.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "workspaceId": {
          "type": "integer",
          "minimum": 1
        }
      },
      "additionalProperties": false
    }
    arguments 10 lines
  • set_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.

    mcp-tool

    {
      "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 lines
  • create_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.

    mcp-tool

    {
      "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 lines
  • finalize_site auth-required never probed

    Promote a pending ATTIM site version to live. Anonymous sites require claimToken.

    mcp-tool

    {
      "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 lines
  • get_profile auth-required 6h ago

    Get the stable profile ID and email of the connected ATTIM account.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • list_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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • rename_version auth-required never probed

    Set or clear the name of a retained finalized project version. Pass null to clear. Requires project write access.

    mcp-tool

    {
      "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 lines
  • preview_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.

    mcp-tool

    {
      "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 lines
  • download_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.

    mcp-tool

    {
      "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 lines
  • publish_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.

    mcp-tool

    {
      "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 lines
  • clone_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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "sourceSlug"
      ],
      "properties": {
        "sourceSlug": {
          "type": "string",
          "minLength": 1
        },
        "ttlSeconds": {
          "type": "integer",
          "minimum": 60
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • set_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.

    mcp-tool

    {
      "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 lines
  • create_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.

    mcp-tool

    {
      "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 lines
  • set_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.

    mcp-tool

    {
      "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 lines
  • restore_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.

    mcp-tool

    {
      "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 lines
  • update_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.

    mcp-tool

    {
      "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 lines
  • delete_site auth-required never probed

    Delete an owned ATTIM site, or an anonymous site when claimToken is supplied.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1
        },
        "claimToken": {
          "type": "string",
          "minLength": 8
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • rename_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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug",
        "newSlug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1
        },
        "newSlug": {
          "type": "string",
          "maxLength": 63,
          "minLength": 3
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • list_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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "slug"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • claim_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.

    mcp-tool

    {
      "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 lines
  • update_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.

    mcp-tool

    {
      "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 lines
  • read_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.

    mcp-tool

    {
      "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 lines
  • edit_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.

    mcp-tool

    {
      "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
_ 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 8158e2b9b717d9da.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/8158e2b9b717d9da/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/8158e2b9b717d9da/badge.svg)](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.

_ how we know
card completeness
100%

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.