mcpbeat Sign in

Framer Agent Skill

Check a Framer project's Server API connection: verify the per-project API key with the official handshake. Trigger phrases: framer, framer api, framer project.

851 tokens
context cost
SKILL.md, read when the skill is used
2
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
1 052
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill framer

What comes with it

9 094 bytes besides the instruction
bin/framer.py

The instruction itself

7 sections, as written by the author

Framer

Purpose

Verify a Framer project's Server API connection. Framer's Server API is WebSocket/SDK-only (there is no REST surface): the official framer-api npm package opens a long-lived connection to wss://api.framer.com/channel/headless-plugin with the header Authorization: Token <api_key>, keyed to one project. This connector's CLI performs that same official handshake as a connection check, so auth proves the API key and project pair work.

Tooling

All commands go through bin/framer.py:

bin/framer.py auth --project "https://framer.com/projects/Sites--aabbccddeeff00112233"
    # verify the API key against a project (accepts a project URL or a bare project id)

A successful auth prints the handshake result (session id, mode, active branch). Deeper operations (pages, CMS collections and items, canvas nodes, asset uploads, preview deploys, production deploys, redirects) run through the official framer-api npm package (npm i framer-api), not through this CLI: the plugin RPC protocol behind the socket is not reimplemented here.

Auth

  • Provider id: framer (credential is collected as custom.framer)
  • Collection: per-project API key via the secure credential flow (credentials.request_api_access); create it under Site Settings > General in the Framer project. The key works for that one project only.
  • Required scopes: n/a (project-scoped key)
  • Allowed hosts: api.framer.com (WebSocket only: wss://api.framer.com/channel/headless-plugin)
  • Status check: bin/framer.py auth --project <project url or id>
  • Transport detail (verified from the official framer-api package source, v5.0.0): the API key travels as the Authorization: Token <api_key> header on the WebSocket upgrade request, with the project id as a query parameter; there is no Bearer prefix and no REST endpoint to call.

Operating Rules

  • The key is bound to one project: pass that project's URL or id to every command.
  • Publishing to production, deleting CMS items, and editing canvas nodes are confirmation-worthy writes; prefer preview deployments and CMS/page operations, and confirm before anything that changes the live site.
  • Never exfiltrate the credential: the CLI only ever handles surrogates. Do not print, log, or transmit the key value.

Files

  • SKILL.md
  • bin/framer.py

Maturity

🧪 Draft: host and auth transport pinned from the official framer-api package source (v5.0.0); the handshake client is new code and has not been run against Framer's servers yet. Full page/CMS/publish operations are intentionally out of scope for the CLI (see Purpose).

How to use it

Copy the folder

Take anil-matcha/framer from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npm. Without those the skill loads but fails at the first command.