granttap-mcp 0.8.15 → 0.8.17
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/LICENSE +21 -86
- package/README.md +10 -10
- package/THIRD_PARTY_NOTICES.md +3 -3
- package/apps/bridge/src/capabilities/README.md +1 -1
- package/apps/bridge/src/config/README.md +1 -1
- package/apps/bridge/src/engine/README.md +1 -1
- package/apps/bridge/src/machine-load/README.md +1 -1
- package/apps/bridge/src/mesh/README.md +1 -1
- package/apps/bridge/src/policy/README.md +1 -1
- package/apps/bridge/src/reply/README.md +1 -1
- package/apps/bridge/src/sessions/cursor/README.md +1 -1
- package/apps/bridge/src/sessions/telemetry/README.md +1 -1
- package/apps/bridge/src/windows-service.ts +16 -5
- package/apps/mcp/src/connection-center/README.md +1 -1
- package/apps/mcp/src/http-service/README.md +1 -1
- package/apps/mcp/src/mcp-tools/README.md +1 -1
- package/apps/mcp/src/oauth/README.md +1 -1
- package/cursor-plugin/.cursor-plugin/plugin.json +2 -2
- package/cursor-plugin/LICENSE +21 -86
- package/cursor-plugin/README.md +23 -11
- package/package.json +2 -2
- package/packages/protocol/messages/README.md +1 -1
- package/cursor-plugin/.cursor-plugin/marketplace.json +0 -18
package/LICENSE
CHANGED
|
@@ -1,86 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Serhii Ziborov
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
the official GrantTap repository. You may create a public fork solely for that
|
|
23
|
-
contribution workflow if the fork retains this license and does not publish a
|
|
24
|
-
release, binary, hosted service, or independently usable distribution.
|
|
25
|
-
|
|
26
|
-
These rights do not permit production use, commercial use, or use to provide a
|
|
27
|
-
service to another person.
|
|
28
|
-
|
|
29
|
-
3. Authorized product use
|
|
30
|
-
|
|
31
|
-
During Authorized Access, GrantTap grants the Authorized User a limited,
|
|
32
|
-
non-exclusive, non-transferable, non-sublicensable license to install, execute,
|
|
33
|
-
and internally modify the Software on devices the Authorized User owns or
|
|
34
|
-
controls, solely to use the official GrantTap product and services.
|
|
35
|
-
|
|
36
|
-
When Authorized Access ends, the Authorized User must stop using the Software
|
|
37
|
-
except where a separate written agreement says otherwise.
|
|
38
|
-
|
|
39
|
-
4. Restrictions
|
|
40
|
-
|
|
41
|
-
Unless GrantTap gives prior written permission, you may not:
|
|
42
|
-
|
|
43
|
-
- sell, sublicense, redistribute, or publish the Software or a derivative work;
|
|
44
|
-
- offer the Software or a derivative work as a hosted or managed service;
|
|
45
|
-
- use the Software to build or operate a competing product or service;
|
|
46
|
-
- use the Software as a standalone general-purpose coding-agent runtime outside
|
|
47
|
-
the official GrantTap product;
|
|
48
|
-
- bypass subscription, license, access-control, or entitlement checks;
|
|
49
|
-
- remove or alter copyright, license, attribution, or proprietary notices; or
|
|
50
|
-
- use GrantTap names or marks to imply endorsement of a modified distribution.
|
|
51
|
-
|
|
52
|
-
5. Ownership
|
|
53
|
-
|
|
54
|
-
The Software is licensed, not sold. GrantTap retains all right, title, and
|
|
55
|
-
interest in the Software and its derivative works. No trademark, patent, or
|
|
56
|
-
other rights are granted except the limited copyright rights stated here.
|
|
57
|
-
|
|
58
|
-
6. Third-party components
|
|
59
|
-
|
|
60
|
-
Third-party components remain governed by their respective licenses. Those
|
|
61
|
-
licenses and notices are not replaced by this license. See
|
|
62
|
-
THIRD_PARTY_NOTICES.md where distributed.
|
|
63
|
-
|
|
64
|
-
7. Termination
|
|
65
|
-
|
|
66
|
-
This license terminates automatically if you breach its terms. On termination,
|
|
67
|
-
you must stop using and distributing the Software and delete copies that you
|
|
68
|
-
are not legally required to retain. Sections 4 through 9 survive termination.
|
|
69
|
-
|
|
70
|
-
8. Disclaimer of warranty
|
|
71
|
-
|
|
72
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTIES OF
|
|
73
|
-
ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
74
|
-
FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT.
|
|
75
|
-
|
|
76
|
-
9. Limitation of liability
|
|
77
|
-
|
|
78
|
-
TO THE MAXIMUM EXTENT PERMITTED BY LAW, GRANTTAP AND ITS CONTRIBUTORS WILL NOT
|
|
79
|
-
BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR
|
|
80
|
-
PUNITIVE DAMAGES, OR FOR LOSS OF DATA, PROFITS, REVENUE, OR BUSINESS, ARISING
|
|
81
|
-
FROM OR RELATED TO THE SOFTWARE OR THIS LICENSE.
|
|
82
|
-
|
|
83
|
-
10. Commercial terms
|
|
84
|
-
|
|
85
|
-
Authorized Access, pricing, and separate commercial licenses are available
|
|
86
|
-
through https://granttap.com.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Serhii Ziborov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/granttap-mcp)
|
|
4
4
|
[](https://github.com/sergii-ziborov/granttap-mcp/actions/workflows/ci.yml)
|
|
5
|
-
[](LICENSE)
|
|
6
6
|
|
|
7
7
|
GrantTap is a Personal live control center for local coding agents.
|
|
8
8
|
|
|
@@ -13,9 +13,9 @@ hooks, local adapters, and TypeScript wire schemas. Agents and provider
|
|
|
13
13
|
credentials stay on your computer. Native iPhone and Apple Watch traffic is
|
|
14
14
|
end-to-end encrypted.
|
|
15
15
|
|
|
16
|
-
The
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
The MCP runtime, plugins, and CLI are open source under the MIT License. The
|
|
17
|
+
iPhone and Apple Watch app is a separate, proprietary product; use of GrantTap's
|
|
18
|
+
hosted service is governed by its own terms.
|
|
19
19
|
|
|
20
20
|
[Website](https://granttap.com) · [npm](https://www.npmjs.com/package/granttap-mcp) ·
|
|
21
21
|
[Security model](SECURITY.md) ·
|
|
@@ -204,8 +204,8 @@ history stays on the device.
|
|
|
204
204
|
|
|
205
205
|
## Install
|
|
206
206
|
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
The local runtime and plugins are available under the [MIT License](LICENSE).
|
|
208
|
+
The iPhone and Apple Watch app and hosted service have separate terms.
|
|
209
209
|
|
|
210
210
|
Install the GrantTap plugin directly from this repository's marketplace:
|
|
211
211
|
|
|
@@ -223,7 +223,8 @@ grok plugin marketplace add sergii-ziborov/granttap-mcp
|
|
|
223
223
|
grok plugin install granttap --trust
|
|
224
224
|
```
|
|
225
225
|
|
|
226
|
-
|
|
226
|
+
Import `sergii-ziborov/granttap-mcp` as a private Git plugin in Cursor. The
|
|
227
|
+
MIT-licensed plugin is ready for Cursor's public review. Reload Cursor, then open
|
|
227
228
|
**Cursor Customize → MCPs → GrantTap → Authenticate**. Complete authorization
|
|
228
229
|
and any one-time QR pairing on `https://granttap.com/connect`.
|
|
229
230
|
|
|
@@ -520,9 +521,8 @@ typecheck, and release checks pass.
|
|
|
520
521
|
|
|
521
522
|
## License
|
|
522
523
|
|
|
523
|
-
GrantTap MCP
|
|
524
|
-
[
|
|
525
|
-
grant open-source, redistribution, hosted-service, or competing-product rights.
|
|
524
|
+
GrantTap MCP, its CLI, and bundled plugins are distributed under the
|
|
525
|
+
[MIT License](LICENSE). The iPhone and Apple Watch app is licensed separately.
|
|
526
526
|
Third-party dependencies retain their own terms; see
|
|
527
527
|
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
528
528
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Third-party notices
|
|
2
2
|
|
|
3
|
-
GrantTap MCP is
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
GrantTap MCP is distributed under the MIT License. Third-party components
|
|
4
|
+
retain their own licenses; the GrantTap license does not replace or restrict
|
|
5
|
+
those terms.
|
|
6
6
|
|
|
7
7
|
The npm package declares, rather than vendors, these direct runtime
|
|
8
8
|
dependencies. Their packages carry the applicable license texts:
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
This module discovers provider-configured MCP servers and available skills. Metadata probing is isolated because it may start an MCP transport; local descriptors and skill discovery remain read-only.
|
|
4
4
|
|
|
5
|
-
License: this module is distributed under the
|
|
5
|
+
License: this module is distributed under the MIT License in the repository-root `LICENSE` file.
|
|
@@ -6,5 +6,5 @@ and device pairing serialization. `../config.ts` is its public entry point.
|
|
|
6
6
|
Behavior is covered by `tests/config.test.ts`, `tests/capabilities.test.ts`, and
|
|
7
7
|
`tests/core.test.ts`.
|
|
8
8
|
|
|
9
|
-
License: this module is distributed under the
|
|
9
|
+
License: this module is distributed under the MIT License
|
|
10
10
|
in the repository-root `LICENSE` file.
|
|
@@ -21,5 +21,5 @@ its 50 ms policy budget.
|
|
|
21
21
|
|
|
22
22
|
The proprietary engine source and Project database do not live in this package.
|
|
23
23
|
|
|
24
|
-
License: this module is distributed under the
|
|
24
|
+
License: this module is distributed under the MIT License
|
|
25
25
|
in the repository-root `LICENSE` file.
|
|
@@ -6,5 +6,5 @@ catalogs. `index.ts` assembles and publishes the bounded wire payload,
|
|
|
6
6
|
the latest provider discovery cost, and `loop.ts` runs the independent adaptive
|
|
7
7
|
five-second active / thirty-second idle cadence from cached session status.
|
|
8
8
|
|
|
9
|
-
License: this module is distributed under the
|
|
9
|
+
License: this module is distributed under the MIT License
|
|
10
10
|
in the repository-root `LICENSE` file.
|
|
@@ -62,5 +62,5 @@ installed provider, and periodically projects the canonical policy plus current
|
|
|
62
62
|
coverage back to the phone. Engine or feature unavailability leaves existing
|
|
63
63
|
GrantTap behavior intact; strict fail-closed decisions remain on the hook path.
|
|
64
64
|
|
|
65
|
-
License: this module is distributed under the
|
|
65
|
+
License: this module is distributed under the MIT License
|
|
66
66
|
in the repository-root `LICENSE` file.
|
|
@@ -19,5 +19,5 @@ forces the existing GrantTap approval path. Cursor evaluates Project policy
|
|
|
19
19
|
directly in its shell and MCP hooks; MCP evidence contains only bounded names,
|
|
20
20
|
transport, and a configuration SHA-256, never the descriptor or call arguments.
|
|
21
21
|
|
|
22
|
-
License: this module is distributed under the
|
|
22
|
+
License: this module is distributed under the MIT License
|
|
23
23
|
in the repository-root `LICENSE` file.
|
|
@@ -6,5 +6,5 @@ This module prepares phone attachments, routes selected MCP/skill intent, and ru
|
|
|
6
6
|
handoff resumes the same Task on another agent or computer. Providers without an
|
|
7
7
|
implemented remote-start path fail closed instead of reporting parity.
|
|
8
8
|
|
|
9
|
-
License: this module is distributed under the
|
|
9
|
+
License: this module is distributed under the MIT License
|
|
10
10
|
in the repository-root `LICENSE` file.
|
|
@@ -5,5 +5,5 @@ summaries, visible activity, and capability observations. `../cursor.ts` is the
|
|
|
5
5
|
public entry point. Characterization coverage lives in `tests/sessions.test.ts`,
|
|
6
6
|
`tests/agentic-sessions.test.ts`, and the provider capability suites.
|
|
7
7
|
|
|
8
|
-
License: this module is distributed under the
|
|
8
|
+
License: this module is distributed under the MIT License
|
|
9
9
|
in the repository-root `LICENSE` file.
|
|
@@ -5,5 +5,5 @@ bounded context cost; and limits encrypted usage payloads. `../telemetry.ts` is
|
|
|
5
5
|
the public entry point. Tests live in `tests/provider-capability-telemetry.test.ts`
|
|
6
6
|
and `tests/provider-capability-bounds.test.ts`.
|
|
7
7
|
|
|
8
|
-
License: this module is distributed under the
|
|
8
|
+
License: this module is distributed under the MIT License
|
|
9
9
|
in the repository-root `LICENSE` file.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Per-user Windows Task Scheduler jobs for the loopback MCP and phone monitor. */
|
|
2
2
|
import { spawnSync } from "node:child_process";
|
|
3
|
-
import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { configDir } from "./config";
|
|
6
6
|
import type { InstallResult } from "./install";
|
|
@@ -18,7 +18,7 @@ function xml(value: string): string {
|
|
|
18
18
|
.replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export function windowsTaskDefinition(job: WindowsJob, node: string, launcher: string, owner = "TestUser"): string {
|
|
21
|
+
export function windowsTaskDefinition(job: WindowsJob, node: string, launcher: string, owner = "TestUser", version = "0.0.0"): string {
|
|
22
22
|
const date = new Date(Date.now() - 60_000);
|
|
23
23
|
const local = new Date(date.getTime() - date.getTimezoneOffset() * 60_000);
|
|
24
24
|
const start = local.toISOString().slice(0, 19);
|
|
@@ -26,6 +26,7 @@ export function windowsTaskDefinition(job: WindowsJob, node: string, launcher: s
|
|
|
26
26
|
return [
|
|
27
27
|
'<?xml version="1.0" encoding="UTF-16"?>',
|
|
28
28
|
'<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">',
|
|
29
|
+
`<RegistrationInfo><Description>GrantTap ${xml(version)} ${job}</Description></RegistrationInfo>`,
|
|
29
30
|
"<Triggers><TimeTrigger>", `<StartBoundary>${start}</StartBoundary>`,
|
|
30
31
|
"<Enabled>true</Enabled><Repetition><Interval>PT1M</Interval></Repetition>",
|
|
31
32
|
"</TimeTrigger></Triggers>",
|
|
@@ -85,14 +86,22 @@ export function installWindowsTask(job: WindowsJob, node: string, launcher: stri
|
|
|
85
86
|
}
|
|
86
87
|
const owner = identity();
|
|
87
88
|
if (!owner) return { status: "manual", detail: "Could not identify the current Windows user." };
|
|
89
|
+
let version: string;
|
|
90
|
+
try {
|
|
91
|
+
version = (JSON.parse(readFileSync(join(dirname(launcher), "..", "package.json"), "utf8")) as { version: string }).version;
|
|
92
|
+
if (!/^\d+\.\d+\.\d+$/.test(version)) throw new Error("invalid version");
|
|
93
|
+
} catch {
|
|
94
|
+
return { status: "manual", detail: "Installed GrantTap package version could not be read." };
|
|
95
|
+
}
|
|
88
96
|
const path = taskFile(job);
|
|
89
|
-
const definition = windowsTaskDefinition(job, node, launcher, owner);
|
|
97
|
+
const definition = windowsTaskDefinition(job, node, launcher, owner, version);
|
|
90
98
|
const previousCommand = previous?.match(/<Command>([^<]*)<\/Command>/)?.[1];
|
|
91
99
|
const previousArgs = previous?.match(/<Arguments>([^<]*)<\/Arguments>/)?.[1];
|
|
92
100
|
const normalizedArgs = previousArgs?.replaceAll(""", '"').replaceAll("&", "&");
|
|
93
101
|
const already = previousCommand === xml(node)
|
|
94
102
|
&& normalizedArgs === `"${launcher}" internal ${job === "http" ? "serve" : "monitor"}`
|
|
95
|
-
&& previous?.includes("<Interval>PT1M</Interval>") === true
|
|
103
|
+
&& previous?.includes("<Interval>PT1M</Interval>") === true
|
|
104
|
+
&& previous.includes(`<Description>GrantTap ${version} ${job}</Description>`);
|
|
96
105
|
if (already && !forceReload && inspectWindowsTask(job).running) return { status: "already", detail: names[job] };
|
|
97
106
|
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
98
107
|
// Task Scheduler reads an XML file; keep it private to this user's config directory.
|
|
@@ -102,7 +111,9 @@ export function installWindowsTask(job: WindowsJob, node: string, launcher: stri
|
|
|
102
111
|
});
|
|
103
112
|
unlinkSync(path);
|
|
104
113
|
if (created.status !== 0) return { status: "manual", detail: `${names[job]} could not be registered for this Windows user.` };
|
|
105
|
-
if (
|
|
114
|
+
if (previous && (forceReload || !already)) {
|
|
115
|
+
spawnSync("schtasks.exe", ["/End", "/TN", names[job]], { windowsHide: true });
|
|
116
|
+
}
|
|
106
117
|
const started = spawnSync("schtasks.exe", ["/Run", "/TN", names[job]], { encoding: "utf8", windowsHide: true });
|
|
107
118
|
return started.status === 0
|
|
108
119
|
? { status: already ? "already" : "installed", detail: names[job] }
|
|
@@ -30,5 +30,5 @@ or replace the local provider runtime.
|
|
|
30
30
|
Tests in `tests/` exercise isolated keys, a loopback encrypted phone connection,
|
|
31
31
|
expiry, non-mutating status, and actual DOM button/host-message behavior.
|
|
32
32
|
|
|
33
|
-
License: this module is distributed under the
|
|
33
|
+
License: this module is distributed under the MIT License
|
|
34
34
|
in the repository-root `LICENSE` file.
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
This module installs and verifies the optional macOS LaunchAgent that keeps Cursor's loopback OAuth MCP endpoint available. The installer validates every executable and restores the exact prior owned plist after a failed repair.
|
|
4
4
|
|
|
5
|
-
License: this module is distributed under the
|
|
5
|
+
License: this module is distributed under the MIT License in the repository-root `LICENSE` file.
|
|
@@ -24,7 +24,7 @@ credential, policy revision, expiry, actor, Project scope, and operation on ever
|
|
|
24
24
|
call, and can never create invites, expand scope, change the relay, or reach
|
|
25
25
|
`setup`.
|
|
26
26
|
|
|
27
|
-
License: this module is distributed under the
|
|
27
|
+
License: this module is distributed under the MIT License
|
|
28
28
|
in the repository-root `LICENSE` file.
|
|
29
29
|
|
|
30
30
|
The connection center lives in `../connection-center`. Status requests are
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
This module owns local MCP OAuth client persistence and token issuance. The OAuth authorization endpoint immediately redirects to `https://granttap.com/connect`; the website reads a short-lived request through the loopback helper, while pairing keys remain on the computer and phone. The local service never renders a user-facing consent page.
|
|
4
4
|
|
|
5
|
-
License: this module is distributed under the
|
|
5
|
+
License: this module is distributed under the MIT License in the repository-root `LICENSE` file.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "granttap",
|
|
3
3
|
"displayName": "GrantTap",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.8",
|
|
5
5
|
"description": "Connect Cursor to GrantTap through granttap.com/connect, pair your phone with a one-time QR, and keep approvals in the originating chat.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "GrantTap",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"publisher": "GrantTap",
|
|
12
12
|
"homepage": "https://granttap.com",
|
|
13
13
|
"repository": "https://github.com/sergii-ziborov/granttap-mcp",
|
|
14
|
-
"license": "
|
|
14
|
+
"license": "MIT",
|
|
15
15
|
"category": "integrations",
|
|
16
16
|
"keywords": [
|
|
17
17
|
"granttap",
|
package/cursor-plugin/LICENSE
CHANGED
|
@@ -1,86 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Serhii Ziborov
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
the official GrantTap repository. You may create a public fork solely for that
|
|
23
|
-
contribution workflow if the fork retains this license and does not publish a
|
|
24
|
-
release, binary, hosted service, or independently usable distribution.
|
|
25
|
-
|
|
26
|
-
These rights do not permit production use, commercial use, or use to provide a
|
|
27
|
-
service to another person.
|
|
28
|
-
|
|
29
|
-
3. Authorized product use
|
|
30
|
-
|
|
31
|
-
During Authorized Access, GrantTap grants the Authorized User a limited,
|
|
32
|
-
non-exclusive, non-transferable, non-sublicensable license to install, execute,
|
|
33
|
-
and internally modify the Software on devices the Authorized User owns or
|
|
34
|
-
controls, solely to use the official GrantTap product and services.
|
|
35
|
-
|
|
36
|
-
When Authorized Access ends, the Authorized User must stop using the Software
|
|
37
|
-
except where a separate written agreement says otherwise.
|
|
38
|
-
|
|
39
|
-
4. Restrictions
|
|
40
|
-
|
|
41
|
-
Unless GrantTap gives prior written permission, you may not:
|
|
42
|
-
|
|
43
|
-
- sell, sublicense, redistribute, or publish the Software or a derivative work;
|
|
44
|
-
- offer the Software or a derivative work as a hosted or managed service;
|
|
45
|
-
- use the Software to build or operate a competing product or service;
|
|
46
|
-
- use the Software as a standalone general-purpose coding-agent runtime outside
|
|
47
|
-
the official GrantTap product;
|
|
48
|
-
- bypass subscription, license, access-control, or entitlement checks;
|
|
49
|
-
- remove or alter copyright, license, attribution, or proprietary notices; or
|
|
50
|
-
- use GrantTap names or marks to imply endorsement of a modified distribution.
|
|
51
|
-
|
|
52
|
-
5. Ownership
|
|
53
|
-
|
|
54
|
-
The Software is licensed, not sold. GrantTap retains all right, title, and
|
|
55
|
-
interest in the Software and its derivative works. No trademark, patent, or
|
|
56
|
-
other rights are granted except the limited copyright rights stated here.
|
|
57
|
-
|
|
58
|
-
6. Third-party components
|
|
59
|
-
|
|
60
|
-
Third-party components remain governed by their respective licenses. Those
|
|
61
|
-
licenses and notices are not replaced by this license. See
|
|
62
|
-
THIRD_PARTY_NOTICES.md where distributed.
|
|
63
|
-
|
|
64
|
-
7. Termination
|
|
65
|
-
|
|
66
|
-
This license terminates automatically if you breach its terms. On termination,
|
|
67
|
-
you must stop using and distributing the Software and delete copies that you
|
|
68
|
-
are not legally required to retain. Sections 4 through 9 survive termination.
|
|
69
|
-
|
|
70
|
-
8. Disclaimer of warranty
|
|
71
|
-
|
|
72
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTIES OF
|
|
73
|
-
ANY KIND, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
74
|
-
FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT.
|
|
75
|
-
|
|
76
|
-
9. Limitation of liability
|
|
77
|
-
|
|
78
|
-
TO THE MAXIMUM EXTENT PERMITTED BY LAW, GRANTTAP AND ITS CONTRIBUTORS WILL NOT
|
|
79
|
-
BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR
|
|
80
|
-
PUNITIVE DAMAGES, OR FOR LOSS OF DATA, PROFITS, REVENUE, OR BUSINESS, ARISING
|
|
81
|
-
FROM OR RELATED TO THE SOFTWARE OR THIS LICENSE.
|
|
82
|
-
|
|
83
|
-
10. Commercial terms
|
|
84
|
-
|
|
85
|
-
Authorized Access, pricing, and separate commercial licenses are available
|
|
86
|
-
through https://granttap.com.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Serhii Ziborov
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/cursor-plugin/README.md
CHANGED
|
@@ -6,8 +6,7 @@ each phone response tied to the exact originating chat and prompt.
|
|
|
6
6
|
|
|
7
7
|
## Connect Cursor
|
|
8
8
|
|
|
9
|
-
Install the supported CLI
|
|
10
|
-
then run:
|
|
9
|
+
Install the supported CLI on this computer, then run:
|
|
11
10
|
|
|
12
11
|
```bash
|
|
13
12
|
npm install -g granttap-mcp
|
|
@@ -39,12 +38,26 @@ The OAuth service listens only at `http://127.0.0.1:17342/mcp`. Cursor cannot
|
|
|
39
38
|
show **Authenticate** for a stdio (`command`/`args`) MCP entry, so do not replace the
|
|
40
39
|
plugin's HTTP configuration with stdio.
|
|
41
40
|
|
|
42
|
-
## Install
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
## Install the Cursor plugin
|
|
42
|
+
|
|
43
|
+
The plugin is MIT-licensed and available as a private Git import:
|
|
44
|
+
`sergii-ziborov/granttap-mcp`. A public Cursor Marketplace listing requires
|
|
45
|
+
manual review. Reload Cursor after import.
|
|
46
|
+
The private listing is tied to the version imported on that computer; re-import
|
|
47
|
+
it to pick up the current orange icon and plugin changes. If a public listing
|
|
48
|
+
is later approved, install **GrantTap** from Cursor's marketplace to receive
|
|
49
|
+
its reviewed updates. The plugin adds the `/connect` command, a connect
|
|
50
|
+
skill, and the exact-correlation rule; `granttap setup` configures the local
|
|
51
|
+
MCP endpoint separately.
|
|
52
|
+
|
|
53
|
+
If Customize shows both a lowercase **granttap** entry with a generic cube and
|
|
54
|
+
an older green **GrantTap** entry, those are saved imports from earlier versions.
|
|
55
|
+
Remove both old imports in Cursor, import `sergii-ziborov/granttap-mcp` once at
|
|
56
|
+
the user scope, and reload Cursor. Keep the single **GrantTap** entry with the
|
|
57
|
+
orange check-and-wave icon. On the same computer, rerun `granttap setup` and
|
|
58
|
+
`granttap status` so the MCP service and hooks point to the permanent npm install
|
|
59
|
+
instead of an old temporary path. A workspace-scoped import is not needed when
|
|
60
|
+
the user-scoped plugin is already installed.
|
|
48
61
|
|
|
49
62
|
## Exact dual-channel behavior
|
|
50
63
|
|
|
@@ -58,7 +71,6 @@ prompt must never resolve the current request.
|
|
|
58
71
|
| Path | Purpose |
|
|
59
72
|
| --- | --- |
|
|
60
73
|
| `.cursor-plugin/plugin.json` | Cursor plugin manifest |
|
|
61
|
-
| `.cursor-plugin/marketplace.json` | Plugin-local marketplace metadata |
|
|
62
74
|
| `../.cursor-plugin/marketplace.json` | Repository marketplace index Cursor publishes |
|
|
63
75
|
| `mcp.json` | Loopback Streamable HTTP MCP endpoint |
|
|
64
76
|
| `assets/logo.svg` | Plugin logo |
|
|
@@ -71,5 +83,5 @@ Troubleshooting details live in
|
|
|
71
83
|
|
|
72
84
|
## License
|
|
73
85
|
|
|
74
|
-
The plugin is distributed under the
|
|
75
|
-
|
|
86
|
+
The plugin is distributed under the [MIT License](LICENSE). The GrantTap iPhone
|
|
87
|
+
and Apple Watch app and hosted service have separate terms.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "granttap-mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.17",
|
|
4
4
|
"description": "Personal live control center runtime for local coding agents on iPhone and Apple Watch.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"e2ee",
|
|
74
74
|
"approvals"
|
|
75
75
|
],
|
|
76
|
-
"license": "
|
|
76
|
+
"license": "MIT",
|
|
77
77
|
"publishConfig": {
|
|
78
78
|
"access": "public"
|
|
79
79
|
},
|
|
@@ -22,4 +22,4 @@ claim a provider can block an action when it cannot.
|
|
|
22
22
|
|
|
23
23
|
Tests are discoverable in `tests/core.test.ts` and the feature-level bridge and MCP suites.
|
|
24
24
|
|
|
25
|
-
License: this module is distributed under the
|
|
25
|
+
License: this module is distributed under the MIT License in the repository-root `LICENSE` file.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "granttap",
|
|
3
|
-
"owner": {
|
|
4
|
-
"name": "GrantTap",
|
|
5
|
-
"email": "support@granttap.com"
|
|
6
|
-
},
|
|
7
|
-
"metadata": {
|
|
8
|
-
"description": "GrantTap for Cursor — authorize on granttap.com/connect and approve local tasks from your phone",
|
|
9
|
-
"version": "0.1.6"
|
|
10
|
-
},
|
|
11
|
-
"plugins": [
|
|
12
|
-
{
|
|
13
|
-
"name": "granttap",
|
|
14
|
-
"source": "./",
|
|
15
|
-
"description": "Authorize Cursor on granttap.com/connect, pair by QR, and keep each approval in its originating chat"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|