@linkbunny/mcp 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/skill.md CHANGED
@@ -15,10 +15,15 @@ publishing through the site's normal workflow, or rejects the request.
15
15
 
16
16
  1. A LinkBunny account is required. The human may create an account or log in at
17
17
  `https://getlinkbunny.com`; an agent may do so only with explicitly authorized browser control.
18
- 2. An eligible paid subscription is required before entitled operations. The human must authorize
19
- starting, changing, or cancelling billing; an authorized browser-capable agent may operate the
20
- website UI for that approved action.
21
- 3. With an active subscription, create an API token in the account UI. The human must authorize
18
+ 2. A new account can try one exchange free: one site, one completed link placement and one received
19
+ backlink, no card. Each direction stops on its own: after the site's first placement is
20
+ successfully reported, it gets no new assignments to place, and after its first backlink is
21
+ reported, it is no longer picked as the target of new assignments. The other direction stays
22
+ open. Assignments already issued can still be reported within their normal window and settle,
23
+ so a free site can end up with more than one placement or backlink. The paid subscription removes that limit and covers up to 10 sites. The human
24
+ must authorize starting, changing, or cancelling billing; an authorized browser-capable agent may
25
+ operate the website UI for that approved action.
26
+ 3. Create an API token in the account UI. The human must authorize
22
27
  each creation, rotation, or revocation; an authorized browser-capable agent may perform it. Copy
23
28
  the token once into an owner-approved secret store and keep it secret.
24
29
  4. Use that token for the public API workflow below. The public API does not provide signup, login,
@@ -35,14 +40,15 @@ may carry out an authorized API or site action only within the approval given.
35
40
  When the owner asks you to set up LinkBunny and has no account or API token yet:
36
41
 
37
42
  1. Plan locally. Inspect the project and propose one HTTPS target URL and one HTTPS area of the
38
- site where nofollow links can go, both on the same registrable domain. Tell the owner the price
39
- ($20/month for up to 10 sites, no per-link fees), that profiles are reviewed before they can
40
- match, that some check-ins return no request, and which later steps need their approval. Make
41
- no LinkBunny API call while there is no token.
43
+ site where nofollow links can go, both on the same registrable domain. Tell the owner the first
44
+ exchange is free for one site, the price after that ($20/month for up to 10 sites, no per-link
45
+ fees), that profiles are reviewed before they can match, that some check-ins return no request,
46
+ and which later steps need their approval. Make no LinkBunny API call while there is no token.
42
47
  2. With the owner's OK, open `https://getlinkbunny.com/login?redirect=%2Faccount%3Fsetup%3Dagent`
43
48
  in their browser, or print it when you cannot open a browser (for example in a cloud or remote
44
49
  session). Opening the link is not browser control: do not read, click, fill, or otherwise
45
- operate the page. The owner signs in, subscribes, and creates the API token there.
50
+ operate the page. The owner signs in and creates the API token there. Subscribing is optional
51
+ for the free exchange.
46
52
  3. With the owner's OK, create a project file `.env.linkbunny` containing only an empty
47
53
  `LINKBUNNY_API_TOKEN=` line and make sure Git ignores it, or use another secret store the owner
48
54
  chooses. The owner pastes the token there. Never ask for the token in chat, and never print,
@@ -51,12 +57,12 @@ When the owner asks you to set up LinkBunny and has no account or API token yet:
51
57
  token out of command arguments and output, for example:
52
58
  `tr -d '\r' < .env.linkbunny | sed -nE 's/^(export )?LINKBUNNY_API_TOKEN="?([A-Za-z0-9._~-]+)"?$/header = "Authorization: Bearer \2"/p' | curl -sS -w '\nHTTP %{http_code}\n' --config - https://api.getlinkbunny.com/v1/me`.
53
59
  If the LinkBunny MCP server is already configured with that token file, its `get_status` tool
54
- makes the same read. `subscriptionActive: true` confirms setup. `401` means the token is missing
55
- or wrong in the file; `subscriptionActive: false` means the subscription is not confirmed yet,
56
- so ask the owner to finish or refresh it on the account page. Do not poll; wait until the owner
57
- says it is done again.
58
- 5. Only after `subscriptionActive: true`, continue with "A — Create a profile". Ask the owner
59
- before registering the site.
60
+ makes the same read. A `200` response confirms setup. `subscriptionActive: false` with
61
+ `siteLimit: 1` means the account is on the free exchange; `subscriptionActive: true` means the
62
+ paid plan is active. `401` means the token is missing or wrong in the file. Do not poll; wait
63
+ until the owner says it is done again.
64
+ 5. After a `200` status read, continue with "A — Create a profile". Ask the owner before
65
+ registering the site.
60
66
 
61
67
  ## Activation and approval gates
62
68
 
@@ -108,12 +114,22 @@ with a valid token even when the subscription has lapsed, and neither reserves,
108
114
  anything. Call them when the owner asks about setup or status, or to recover a lost ID; do not poll.
109
115
  Present an existing pending assignment for owner review rather than checking in again.
110
116
 
117
+ `GET /assignments/:assignmentID` returns one assignment issued to one of your sites, including a
118
+ rejected or expired one: `assignmentID`, source `profileID`, `sourceDomain`, `inventoryPrefix`,
119
+ `targetURL`, `requestedAnchor`, `status` (`pending`, `expired`, `rejected`, `reported`, or
120
+ `reported_late`), `rejectionReason`, `rejectedAt`, the unchanged original `expiresAt`,
121
+ `reportableUntil`, and `canReport`. `reportableUntil` is the last moment a report is accepted:
122
+ `expiresAt` for a rejected assignment, 30 days after `expiresAt` for a pending or expired one, and
123
+ `null` once reported. A pending assignment reads as `expired` from its `expiresAt`. Any assignment
124
+ not issued to your sites returns `404`. Like the other status reads, it needs no subscription,
125
+ changes nothing, and should not be polled; use it to confirm an assignment before asking to report.
126
+
111
127
  ### A — Create a profile
112
128
 
113
129
  After specific authorization, `POST /profiles` with `targetURL`, `requestedAnchor`, one documented
114
130
  `category`, and `inventoryPrefix`. Both URLs must be public HTTPS URLs without credentials or
115
- fragments, on the same registrable domain. This operation requires an active subscription. A
116
- successful Domain Rating lookup returns `201` with status `pending_review`. LinkBunny reviews each
131
+ fragments, on the same registrable domain. Without a subscription, an account can register one
132
+ site for its free exchange. A successful Domain Rating lookup returns `201` with status `pending_review`. LinkBunny reviews each
117
133
  new profile once before it can match as a source or target. Tell the owner review is pending and
118
134
  suggest asking the agent to check again after the advisory interval or once approval is confirmed.
119
135
  Immediately record and retain the response's canonical `profileID` in the owner's approved private
@@ -144,11 +160,13 @@ only when no more specific category fits:
144
160
  After specific authorization, `PATCH /profiles/:profileID` accepts the same fields. Changing the
145
161
  target or inventory URL materially resets the profile to Domain Rating lookup and one-time review;
146
162
  it cannot match during re-review. Anchor- or category-only edits preserve an existing approval.
163
+ Without a subscription, a URL change made within an hour of the site's creation or previous URL
164
+ change waits up to an hour for its Domain Rating lookup and stays `pending` until then.
147
165
 
148
166
  ### B — Check in
149
167
 
150
- After specific authorization, `POST /profiles/:profileID/check-in`. This operation requires an
151
- active subscription. The response contains the same existing pending assignment, one newly
168
+ After specific authorization, `POST /profiles/:profileID/check-in`. Without a subscription, the
169
+ free exchange allows check-ins until the site's one placement is reported. The response contains the same existing pending assignment, one newly
152
170
  reserved assignment, or `{ "assignment": null }`. A profile awaiting review instead returns
153
171
  `{ "assignment": null, "status": "profile_pending_review", "message": "This site is awaiting marketplace review.", "retryAfterSeconds": 3600 }`;
154
172
  the one-hour interval is advisory, and every check-in still requires specific owner authorization.
@@ -240,11 +258,13 @@ may return `409 terminal_conflict`. Expected errors use `{ "error": { "code", "m
240
258
  400 invalid request, 401 credential failure, 403 entitlement failure, 404 unavailable owned
241
259
  resource, or 409 terminal conflict.
242
260
 
243
- When create-profile or check-in returns a subscription-required `403`, tell the owner that a paid
244
- LinkBunny subscription is required and must be completed through the account website at
245
- `https://getlinkbunny.com/account`. Do not imply that signup, billing, or token creation is
246
- available through the public API. Report and reject remain available for already-issued
247
- assignments so they can be settled after entitlement ends.
261
+ When create-profile, check-in, or profile update returns a `403` that mentions the free exchange or a
262
+ subscription, relay its message: the free exchange covers one site and one reported placement, and
263
+ the paid subscription at `https://getlinkbunny.com/account` adds more. A free site that already
264
+ placed its link still stays eligible to receive its one backlink when a match comes up. Do not
265
+ imply that signup, billing, or token creation is available through the public API. Report and
266
+ reject never depend on a subscription: any issued assignment can be reported or reconsidered
267
+ within the usual windows, including after entitlement ends or the free exchange is used.
248
268
 
249
269
  Pending assignments expire at their seven-day deadline. Expiration releases the reservation but
250
270
  does not permanently exclude the directional pair. Report completion for the exact original
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@linkbunny/mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@linkbunny/mcp",
9
- "version": "0.1.5",
9
+ "version": "0.1.7",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@modelcontextprotocol/server": "2.0.0",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@linkbunny/mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "mcpName": "com.getlinkbunny/exchange",
5
- "description": "Local stdio MCP server for LinkBunny nofollow link exchanges. Requires a LinkBunny account API token.",
5
+ "description": "Local stdio MCP server for LinkBunny nofollow link exchanges. Sign in with its login command or use a LinkBunny account API token.",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "linkbunny-mcp": "dist/index.js"