tru-mcp 1.0.0 → 1.1.0
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/server.js +3 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/add_agent_signup.js +2 -3
- package/dist/tools/add_agent_signup.js.map +1 -1
- package/dist/tools/discover_api.js +2 -28
- package/dist/tools/discover_api.js.map +1 -1
- package/dist/tools/discover_apps.js +2 -3
- package/dist/tools/discover_apps.js.map +1 -1
- package/dist/tools/enable_acp.js +3 -4
- package/dist/tools/enable_acp.js.map +1 -1
- package/dist/tools/get_started.js +2 -22
- package/dist/tools/get_started.js.map +1 -1
- package/dist/tools/resolve_payment.js +7 -4
- package/dist/tools/resolve_payment.js.map +1 -1
- package/dist/tools/setup_content.d.ts +0 -1
- package/dist/tools/setup_content.js +3 -108
- package/dist/tools/setup_content.js.map +1 -1
- package/dist/tools/setup_guide.js +206 -174
- package/dist/tools/setup_guide.js.map +1 -1
- package/dist/tools/update_app.d.ts +4 -2
- package/dist/tools/update_app.js +9 -15
- package/dist/tools/update_app.js.map +1 -1
- package/dist/tools/validate_integration.js +3 -114
- package/dist/tools/validate_integration.js.map +1 -1
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -2,7 +2,6 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { requestVirtualCardTool } from "./tools/request_virtual_card.js";
|
|
4
4
|
import { discoverAppsTool } from "./tools/discover_apps.js";
|
|
5
|
-
import { readSkillTool } from "./tools/read_skill.js";
|
|
6
5
|
// create_charge.ts is deprecated — merged into request_payment
|
|
7
6
|
import { checkChargeStatusTool } from "./tools/check_charge_status.js";
|
|
8
7
|
import { registerAppTool } from "./tools/register_app.js";
|
|
@@ -10,7 +9,6 @@ import { initiateOAuthTool } from "./tools/initiate_oauth.js";
|
|
|
10
9
|
import { connectStripeTool } from "./tools/connect_stripe.js";
|
|
11
10
|
import { getStartedTool } from "./tools/get_started.js";
|
|
12
11
|
import { setupGuideTool } from "./tools/setup_guide.js";
|
|
13
|
-
import { discoverApiTool } from "./tools/discover_api.js";
|
|
14
12
|
import { provisionUserTool } from "./tools/provision_user.js";
|
|
15
13
|
import { authenticateTool, logoutTool } from "./tools/authenticate.js";
|
|
16
14
|
import { discoverProductsTool } from "./tools/discover_products.js";
|
|
@@ -46,7 +44,6 @@ server.tool(authenticateTool.name, authenticateTool.description, authenticateToo
|
|
|
46
44
|
server.tool(logoutTool.name, logoutTool.description, logoutTool.inputSchema, logoutTool.handler);
|
|
47
45
|
server.tool(requestVirtualCardTool.name, requestVirtualCardTool.description, requestVirtualCardTool.inputSchema, requestVirtualCardTool.handler);
|
|
48
46
|
server.tool(discoverAppsTool.name, discoverAppsTool.description, discoverAppsTool.inputSchema, discoverAppsTool.handler);
|
|
49
|
-
server.tool(readSkillTool.name, readSkillTool.description, readSkillTool.inputSchema, readSkillTool.handler);
|
|
50
47
|
// pay tool removed — merged into request_payment
|
|
51
48
|
server.tool(checkChargeStatusTool.name, checkChargeStatusTool.description, checkChargeStatusTool.inputSchema, checkChargeStatusTool.handler);
|
|
52
49
|
server.tool(registerAppTool.name, registerAppTool.description, registerAppTool.inputSchema, registerAppTool.handler);
|
|
@@ -54,7 +51,6 @@ server.tool(initiateOAuthTool.name, initiateOAuthTool.description, initiateOAuth
|
|
|
54
51
|
server.tool(connectStripeTool.name, connectStripeTool.description, connectStripeTool.inputSchema, connectStripeTool.handler);
|
|
55
52
|
server.tool(getStartedTool.name, getStartedTool.description, getStartedTool.inputSchema, getStartedTool.handler);
|
|
56
53
|
server.tool(setupGuideTool.name, setupGuideTool.description, setupGuideTool.inputSchema, setupGuideTool.handler);
|
|
57
|
-
server.tool(discoverApiTool.name, discoverApiTool.description, discoverApiTool.inputSchema, discoverApiTool.handler);
|
|
58
54
|
server.tool(provisionUserTool.name, provisionUserTool.description, provisionUserTool.inputSchema, provisionUserTool.handler);
|
|
59
55
|
server.tool(discoverProductsTool.name, discoverProductsTool.description, discoverProductsTool.inputSchema, discoverProductsTool.handler);
|
|
60
56
|
server.tool(configureProductsTool.name, configureProductsTool.description, configureProductsTool.inputSchema, configureProductsTool.handler);
|
|
@@ -85,12 +81,12 @@ const BASE_URL = process.env.TRU_API_URL || "https://tru.so";
|
|
|
85
81
|
server.prompt("dev-setup", "Full walkthrough for integrating tru into your app — auth, billing, identity verification, and agent discoverability", async () => {
|
|
86
82
|
let guide;
|
|
87
83
|
try {
|
|
88
|
-
const res = await fetch(`${BASE_URL}/
|
|
84
|
+
const res = await fetch(`${BASE_URL}/auth.md`);
|
|
89
85
|
guide = await res.text();
|
|
90
86
|
}
|
|
91
87
|
catch {
|
|
92
88
|
guide =
|
|
93
|
-
"Could not fetch
|
|
89
|
+
"Could not fetch auth guide. Visit the tru dashboard for documentation.";
|
|
94
90
|
}
|
|
95
91
|
return {
|
|
96
92
|
messages: [
|
|
@@ -288,7 +284,7 @@ If your app sells products or services, enable ACP (Agent Commerce Protocol) so
|
|
|
288
284
|
|
|
289
285
|
1. Run \`dev_enable_acp\` to generate a bearer token
|
|
290
286
|
2. Share the token and your ACP checkout URL with agent platforms
|
|
291
|
-
3. Add the ACP URL to your
|
|
287
|
+
3. Add the ACP URL to your API documentation
|
|
292
288
|
4. Handle the \`acp.checkout.completed\` webhook to fulfill orders
|
|
293
289
|
|
|
294
290
|
ACP checkout sessions support line items with product IDs (price validated from your catalog) or custom items. Payment is routed to your Stripe account via Connect — same economics as direct charges.
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import { getStoredApp } from "tru-cli/config";
|
|
|
4
4
|
const BASE_URL = process.env.TRU_API_URL || "https://tru.so";
|
|
5
5
|
export const addAgentSignupTool = {
|
|
6
6
|
name: "dev_add_agent_signup",
|
|
7
|
-
description: "Returns the agent signup HTML snippet for the developer's app. The snippet is a single line that goes on the app's login page.
|
|
8
|
-
"Agents browsing the page will see it and follow it to the app's SKILL.md on tru.",
|
|
7
|
+
description: "Returns the agent signup HTML snippet for the developer's app. The snippet is a single line that goes on the app's login page.",
|
|
9
8
|
inputSchema: {
|
|
10
9
|
service_name: z
|
|
11
10
|
.string()
|
|
@@ -39,7 +38,7 @@ export const addAgentSignupTool = {
|
|
|
39
38
|
snippet,
|
|
40
39
|
"```",
|
|
41
40
|
"",
|
|
42
|
-
"**What this does:** This renders a small link on your login page
|
|
41
|
+
"**What this does:** This renders a small link on your login page for AI agents. When an agent visits your login page, it sees this link and knows the app supports tru for payments. Human visitors won't notice it — it's designed to be subtle.",
|
|
43
42
|
"",
|
|
44
43
|
"**Styling:** The component renders a plain `<a>` element — no Shadow DOM. Read the login page's existing CSS (colors, fonts, spacing, link styles) and write a CSS rule for `tru-agent-signup a` that blends in naturally. Match the muted/secondary text color, font size, and font family already used on the page. Center it if the form is centered.",
|
|
45
44
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add_agent_signup.js","sourceRoot":"","sources":["../../src/tools/add_agent_signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"add_agent_signup.js","sourceRoot":"","sources":["../../src/tools/add_agent_signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,gIAAgI;IAClI,WAAW,EAAE;QACX,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0GAA0G,CAAC;KACxH;IACD,OAAO,EAAE,KAAK,EAAE,IAA+B,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,EAAE,YAAY,CAAC;YACtE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8FAA8F,EAAE,CAAC;oBAC1I,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,WAAW,iDAAiD,EAAE,CAAC;oBAChH,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,iEAAiE,CAAC;YAElF,MAAM,KAAK,GAAG;gBACZ,uBAAuB,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;gBAChD,EAAE;gBACF,oDAAoD;gBACpD,EAAE;gBACF,SAAS;gBACT,OAAO;gBACP,KAAK;gBACL,EAAE;gBACF,mPAAmP;gBACnP,EAAE;gBACF,0VAA0V;gBAC1V,EAAE;gBACF,wHAAwH;aACzH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,kBAAkB;YAClB,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;gBACnB,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,oCAAoC,EAAE,kBAAkB,CAAC,CAAC;gBAC7F,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aAClD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -41,42 +41,16 @@ export const discoverApiTool = {
|
|
|
41
41
|
}
|
|
42
42
|
// Pass appId so CLI auto-reports activity + progress for crawl_website and analyze_endpoints
|
|
43
43
|
const result = await discoverApi(serviceName, args.url, lookup.app.id);
|
|
44
|
-
const BASE_URL = process.env.TRU_API_URL || "https://tru.so";
|
|
45
44
|
const lines = [
|
|
46
45
|
`API discovery complete for "${serviceName}".`,
|
|
47
46
|
``,
|
|
48
47
|
`Pages crawled: ${result.pages_crawled}`,
|
|
49
48
|
`API endpoints found: ${result.endpoints_found}`,
|
|
50
49
|
``,
|
|
51
|
-
|
|
52
|
-
``,
|
|
53
|
-
`The generated content is already saved and served at:`,
|
|
54
|
-
` ${BASE_URL}/apps/${serviceName}/agent.md`,
|
|
55
|
-
``,
|
|
56
|
-
`## Next steps:`,
|
|
57
|
-
``,
|
|
58
|
-
`1. Use \`lookup_skill(service_name: "${serviceName}")\` to review the generated content.`,
|
|
59
|
-
``,
|
|
60
|
-
`2. Enhance it with the correct tru integration template (the standard auth/billing/provision`,
|
|
61
|
-
` instructions from the setup guide) if not already included. Then push the updated content`,
|
|
62
|
-
` to tru via PUT /api/apps/:id with the \`agent_guide\` field.`,
|
|
63
|
-
``,
|
|
64
|
-
`3. Write a local \`llms.txt\` file (following https://llmstxt.org) in the public/static directory with:`,
|
|
65
|
-
` - H1: app name`,
|
|
66
|
-
` - Blockquote: one-line description`,
|
|
67
|
-
` - Link to ${BASE_URL}/apps/${serviceName}/agent.md (the tru-hosted URL)`,
|
|
68
|
-
``,
|
|
69
|
-
`4. Add a Link header to all HTTP responses: \`Link: </llms.txt>; rel="llms-txt"\``,
|
|
70
|
-
``,
|
|
71
|
-
`The agent.md is hosted by tru — no local agent.md file needed. The llms.txt and Link header`,
|
|
72
|
-
`stay local in the app's codebase to enable discovery from the app's own domain.`,
|
|
50
|
+
`Use \`lookup_skill(service_name: "${serviceName}")\` to review the generated content.`,
|
|
73
51
|
];
|
|
74
|
-
if (result.pages_crawled === 0 && args.url && /^https?:\/\/(localhost|127\.0\.0\.1)(:|\/|$)/.test(args.url)) {
|
|
75
|
-
lines.push(``, `Your app is running locally — tru's crawler can't reach localhost from the server. ` +
|
|
76
|
-
`The agent.md content will be composed from your codebase instead, which is more accurate.`);
|
|
77
|
-
}
|
|
78
52
|
if (result.endpoints_found === 0) {
|
|
79
|
-
lines.push(``, `No API endpoints were auto-detected. To improve discovery:`, `- Add an /openapi.json or /swagger.json file to your app`, `-
|
|
53
|
+
lines.push(``, `No API endpoints were auto-detected. To improve discovery:`, `- Add an /openapi.json or /swagger.json file to your app`, `- Make sure your /docs or /api/docs pages are publicly accessible`);
|
|
80
54
|
}
|
|
81
55
|
return {
|
|
82
56
|
content: [{ type: "text", text: lines.join("\n") }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover_api.js","sourceRoot":"","sources":["../../src/tools/discover_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,uGAAuG;QACvG,iFAAiF;QACjF,sFAAsF;QACtF,kIAAkI;QAClI,uEAAuE;IACzE,WAAW,EAAE;QACX,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sHAAsH,CAAC;QACnI,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6JAA6J,CAAC;KAC3K;IACD,OAAO,EAAE,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,EAAE,YAAY,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8FAA8F,EAAE,CAAC;gBAC1I,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,QAAQ,WAAW,uDAAuD;yBACjF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,6FAA6F;YAC7F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC;YAExE,MAAM,
|
|
1
|
+
{"version":3,"file":"discover_api.js","sourceRoot":"","sources":["../../src/tools/discover_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,uGAAuG;QACvG,iFAAiF;QACjF,sFAAsF;QACtF,kIAAkI;QAClI,uEAAuE;IACzE,WAAW,EAAE;QACX,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sHAAsH,CAAC;QACnI,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,6JAA6J,CAAC;KAC3K;IACD,OAAO,EAAE,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,EAAE,YAAY,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8FAA8F,EAAE,CAAC;gBAC1I,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,QAAQ,WAAW,uDAAuD;yBACjF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,6FAA6F;YAC7F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC;YAExE,MAAM,KAAK,GAAG;gBACZ,+BAA+B,WAAW,IAAI;gBAC9C,EAAE;gBACF,kBAAkB,MAAM,CAAC,aAAa,EAAE;gBACxC,wBAAwB,MAAM,CAAC,eAAe,EAAE;gBAChD,EAAE;gBACF,qCAAqC,WAAW,uCAAuC;aACxF,CAAC;YAEF,IAAI,MAAM,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4DAA4D,EAC5D,0DAA0D,EAC1D,mEAAmE,CACpE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACpC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,QAAQ,WAAW,iNAAiN;yBAC3O;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,0BAA0B,OAAO,EAAE;qBAC1C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { getAppDirectory } from "tru-cli/api-client";
|
|
|
2
2
|
export const discoverAppsTool = {
|
|
3
3
|
name: "browse_apps",
|
|
4
4
|
description: "List all apps in the tru directory. Returns active apps with their service names, " +
|
|
5
|
-
"descriptions, and
|
|
5
|
+
"descriptions, and websites. Use this to find services an agent can interact with.",
|
|
6
6
|
inputSchema: {},
|
|
7
7
|
handler: async () => {
|
|
8
8
|
try {
|
|
@@ -26,10 +26,9 @@ export const discoverAppsTool = {
|
|
|
26
26
|
lines.push(app.description);
|
|
27
27
|
if (app.website)
|
|
28
28
|
lines.push(`Website: ${app.website}`);
|
|
29
|
-
lines.push(`SKILL.md: ${app.skill_url}`);
|
|
30
29
|
lines.push("");
|
|
31
30
|
}
|
|
32
|
-
lines.push("
|
|
31
|
+
lines.push("Call an app's API to learn how to interact with it — the 402 response is self-documenting.");
|
|
33
32
|
return {
|
|
34
33
|
content: [{ type: "text", text: lines.join("\n") }],
|
|
35
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover_apps.js","sourceRoot":"","sources":["../../src/tools/discover_apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"discover_apps.js","sourceRoot":"","sources":["../../src/tools/discover_apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUrD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,oFAAoF;QACpF,mFAAmF;IACrF,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,EAA8B,CAAC;YAEjE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wDAAwD;yBAC/D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG;gBACZ,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,iCAAiC;aAC3D,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC;gBAC3D,IAAI,GAAG,CAAC,WAAW;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjD,IAAI,GAAG,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YAED,KAAK,CAAC,IAAI,CACR,4FAA4F,CAC7F,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,2BAA2B,OAAO,EAAE;qBAC3C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/tools/enable_acp.js
CHANGED
|
@@ -78,11 +78,10 @@ export const enableACPTool = {
|
|
|
78
78
|
`4. tru creates a PaymentIntent, routes payment to your Stripe account`,
|
|
79
79
|
`5. Your app receives an \`acp.checkout.completed\` webhook`,
|
|
80
80
|
"",
|
|
81
|
-
`###
|
|
81
|
+
`### ACP endpoint`,
|
|
82
82
|
"",
|
|
83
|
-
"```
|
|
84
|
-
|
|
85
|
-
`- [Checkout](${result.acp_base_url}): Create a checkout session (Bearer token required)`,
|
|
83
|
+
"```",
|
|
84
|
+
`Checkout URL: ${result.acp_base_url}`,
|
|
86
85
|
"```",
|
|
87
86
|
"",
|
|
88
87
|
`### ACP endpoints`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable_acp.js","sourceRoot":"","sources":["../../src/tools/enable_acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,0FAA0F;QAC1F,kEAAkE;QAClE,uEAAuE;QACvE,0DAA0D;QAC1D,kGAAkG;IACpG,WAAW,EAAE;QACX,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,gFAAgF,CAAC;KAC9F;IACD,OAAO,EAAE,KAAK,EAAE,IAA+B,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,gEAAgE;yBACvE,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,EAAE,YAAY,CAAC;YACtE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,8FAA8F;yBACrG,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,QAAQ,WAAW,8DAA8D;yBACxF,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,QAAQ,WAAW,0GAA0G;yBACpI,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjE,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAExD,MAAM,KAAK,GAAG;gBACZ,sBAAsB,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;gBAC/C,EAAE;gBACF,kFAAkF;gBAClF,EAAE;gBACF,uBAAuB;gBACvB,KAAK,MAAM,CAAC,YAAY,IAAI;gBAC5B,EAAE;gBACF,mBAAmB;gBACnB,KAAK,MAAM,CAAC,gBAAgB,IAAI;gBAChC,EAAE;gBACF,kBAAkB;gBAClB,EAAE;gBACF,sEAAsE;gBACtE,6EAA6E;gBAC7E,wEAAwE;gBACxE,uEAAuE;gBACvE,4DAA4D;gBAC5D,EAAE;gBACF,
|
|
1
|
+
{"version":3,"file":"enable_acp.js","sourceRoot":"","sources":["../../src/tools/enable_acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,29 +68,9 @@ export const getStartedTool = {
|
|
|
68
68
|
Display this banner EXACTLY as-is:
|
|
69
69
|
${OWL_BANNER}
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Integrate tru into your app to monetize your API. Add one line of middleware and agents can discover, authenticate, and pay — automatically.
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
header: "Setup"
|
|
75
|
-
options:
|
|
76
|
-
- label: "Integrate tru into my app"
|
|
77
|
-
description: "I'm building an app and want to add tru for identity, payments, and agent discovery"
|
|
78
|
-
- label: "Use tru wallet"
|
|
79
|
-
description: "I want my AI agent to buy things, use services, and send or receive money"
|
|
80
|
-
|
|
81
|
-
Wait for the user's answer before continuing. Then follow the matching path below.
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Choose your path (reference)
|
|
86
|
-
${PATH_A_WALLET}
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
### Path B: "I want to integrate tru into my app"
|
|
90
|
-
|
|
91
|
-
Integrate tru into your app to authorize and charge your customers.
|
|
92
|
-
|
|
93
|
-
tru is invisible infrastructure. The app's customers see the app's own branding — tru login and billing screens show the app's logo. The only mention of tru is a small "secured by tru" in the footer.
|
|
73
|
+
tru is invisible infrastructure. Your customers see your branding — tru login and billing screens show your logo. The only mention of tru is a small "secured by tru" in the footer.
|
|
94
74
|
|
|
95
75
|
Drive through all 4 phases in order. Each phase depends on the previous one. Don't stop after each phase to ask what the developer wants — just continue to the next phase.
|
|
96
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get_started.js","sourceRoot":"","sources":["../../src/tools/get_started.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,UAAU,EAEV,QAAQ,EACR,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,mEAAmE;AAEnE,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,CAAC;AAEF,mEAAmE;AAEnE,KAAK,UAAU,qBAAqB;IAClC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,CAA4B,CAAC;YAChF,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,cAAc,IAAI,IAAI,CAAkC,CAAC;YAC3F,MAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;YACvD,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC9G,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,IAAI,CAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,mEAAmE;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,wDAAwD;QACxD,kEAAkE;QAClE,oFAAoF;IACtF,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK,EAAE,KAA4B,EAAE,EAAE;QAC9C,MAAM,aAAa,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAEpD,MAAM,KAAK,GAAG;;;;;EAKhB,UAAU
|
|
1
|
+
{"version":3,"file":"get_started.js","sourceRoot":"","sources":["../../src/tools/get_started.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,UAAU,EAEV,QAAQ,EACR,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,mEAAmE;AAEnE,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,CAAC;AAEF,mEAAmE;AAEnE,KAAK,UAAU,qBAAqB;IAClC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,EAAE,CAA4B,CAAC;YAChF,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,cAAc,IAAI,IAAI,CAAkC,CAAC;YAC3F,MAAM,QAAQ,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;YACvD,WAAW,GAAG,mBAAmB,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC9G,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,IAAI,IAAI,CAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,mEAAmE;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,wDAAwD;QACxD,kEAAkE;QAClE,oFAAoF;IACtF,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK,EAAE,KAA4B,EAAE,EAAE;QAC9C,MAAM,aAAa,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAEpD,MAAM,KAAK,GAAG;;;;;EAKhB,UAAU;;;;;;;;;;;;EAYV,aAAa;;;;;CAKd,CAAC;QAEE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAClD,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,yFAAyF,CAAC"}
|
|
@@ -15,10 +15,13 @@ function openBrowser(url) {
|
|
|
15
15
|
}
|
|
16
16
|
export const resolvePaymentTool = {
|
|
17
17
|
name: "resolve_payment",
|
|
18
|
-
description: "
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
18
|
+
description: "IMPORTANT: Whenever you make an HTTP request and receive a 402 Payment Required response, " +
|
|
19
|
+
"you MUST call this tool to handle payment. Parse the WWW-Authenticate: Payment header from " +
|
|
20
|
+
"the 402 response to extract the challenge_id, realm, method, request, description, and expires fields. " +
|
|
21
|
+
"Pass them here and tru will evaluate the user's spending rules, get approval if needed, " +
|
|
22
|
+
"and return the Authorization header you need to retry the original request. " +
|
|
23
|
+
"After getting the credential, retry your original HTTP request with the Authorization: Payment header. " +
|
|
24
|
+
"This works with any MPP/x402-compatible service (Browserbase, PostalForm, etc.).",
|
|
22
25
|
inputSchema: {
|
|
23
26
|
challenge_id: z.string().describe("Challenge ID from the WWW-Authenticate header"),
|
|
24
27
|
realm: z.string().optional().describe("Merchant realm/domain"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve_payment.js","sourceRoot":"","sources":["../../src/tools/resolve_payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEpF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAE7D,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,UAAU,CAAC;IACb,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"resolve_payment.js","sourceRoot":"","sources":["../../src/tools/resolve_payment.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ export interface SectionMeta {
|
|
|
8
8
|
export declare const SECTIONS: SectionMeta[];
|
|
9
9
|
export declare const SIGNATURE_VERIFICATION_SETUP: string;
|
|
10
10
|
export declare const PROVISION_ENDPOINT_CODE = "```javascript\napp.post('/api/tru/provision', (req, res) => {\n if (!verifyTruSignature(req.headers['x-tru-signature'], req.rawBody)) {\n return res.status(401).json({ error: 'Invalid signature' });\n }\n\n const { email, name, purchases } = req.body;\n // Idempotent: return existing account if already provisioned\n const existing = findAccountByEmail(email);\n const account = existing || createAccount(email, name);\n const plan = purchases?.[0]?.product?.name;\n if (plan) activatePlan(account.id, plan);\n res.json({ api_key: account.apiKey, account_id: account.id });\n});\n```";
|
|
11
|
-
export declare const TRU_AGENT_MD_TEMPLATE: string;
|
|
12
11
|
export interface SectionStatus {
|
|
13
12
|
number: number;
|
|
14
13
|
name: string;
|
|
@@ -15,14 +15,14 @@ export const OWL_BANNER = `
|
|
|
15
15
|
█▄ ▄█
|
|
16
16
|
█▀██▀█▀█
|
|
17
17
|
█ ▀██▀ █ tru v${VERSION}
|
|
18
|
-
████████
|
|
18
|
+
████████ One line of code to monetize your API
|
|
19
19
|
▀██▀▀██▀
|
|
20
20
|
\`\`\``;
|
|
21
21
|
export const SECTIONS = [
|
|
22
22
|
{ number: 1, name: "Register", milestones: ["authenticate", "scan_codebase", "register_app", "api_key_saved"] },
|
|
23
23
|
{ number: 2, name: "Payments", milestones: ["stripe_oauth_started", "stripe_connected", "products_synced", "products_configured", "products_skipped"] },
|
|
24
|
-
{ number: 3, name: "
|
|
25
|
-
{ number: 4, name: "Go Live", milestones: ["
|
|
24
|
+
{ number: 3, name: "Integration", milestones: ["add_middleware", "choose_billing_model", "build_provision", "register_provision_url", "validate_integration"] },
|
|
25
|
+
{ number: 4, name: "Go Live", milestones: ["validate_discovery"] },
|
|
26
26
|
];
|
|
27
27
|
// ─── Shared code snippets ────────────────────────────────────────
|
|
28
28
|
export const SIGNATURE_VERIFICATION_SETUP = `**Setting up signature verification and the provision endpoint**
|
|
@@ -84,111 +84,6 @@ app.post('/api/tru/provision', (req, res) => {
|
|
|
84
84
|
res.json({ api_key: account.apiKey, account_id: account.id });
|
|
85
85
|
});
|
|
86
86
|
\`\`\``;
|
|
87
|
-
// ─── Standard tru integration template for agent.md ──────────────
|
|
88
|
-
export const TRU_AGENT_MD_TEMPLATE = `## Using {APP_NAME} with tru
|
|
89
|
-
|
|
90
|
-
{APP_NAME} is tru-connected. Users authenticate once through tru and can purchase plans or credits that grant access to the app.
|
|
91
|
-
|
|
92
|
-
### Step 1: Authenticate the user
|
|
93
|
-
|
|
94
|
-
Create a tru session and open the login URL in the user's browser:
|
|
95
|
-
|
|
96
|
-
\\\`\\\`\\\`http
|
|
97
|
-
POST ${BASE_URL}/api/auth/mcp-session
|
|
98
|
-
Content-Type: application/json
|
|
99
|
-
|
|
100
|
-
{}
|
|
101
|
-
\\\`\\\`\\\`
|
|
102
|
-
|
|
103
|
-
Response:
|
|
104
|
-
\\\`\\\`\\\`json
|
|
105
|
-
{
|
|
106
|
-
"code": "abc123",
|
|
107
|
-
"login_url": "${BASE_URL}/login?mcp_session=abc123"
|
|
108
|
-
}
|
|
109
|
-
\\\`\\\`\\\`
|
|
110
|
-
|
|
111
|
-
Open \\\`login_url\\\` in the user's browser. They log in or create a tru account. Poll for completion every 2-3 seconds:
|
|
112
|
-
|
|
113
|
-
\\\`\\\`\\\`http
|
|
114
|
-
GET ${BASE_URL}/api/auth/mcp-session/{code}
|
|
115
|
-
\\\`\\\`\\\`
|
|
116
|
-
|
|
117
|
-
When \\\`status\\\` is \\\`"complete"\\\`, you have the user's identity:
|
|
118
|
-
\\\`\\\`\\\`json
|
|
119
|
-
{
|
|
120
|
-
"status": "complete",
|
|
121
|
-
"token": "eyJ...",
|
|
122
|
-
"user": { "id": "uuid", "email": "user@example.com", "name": "Jane" }
|
|
123
|
-
}
|
|
124
|
-
\\\`\\\`\\\`
|
|
125
|
-
|
|
126
|
-
### Step 2: Purchase a plan (if needed)
|
|
127
|
-
|
|
128
|
-
Create a charge for the user. Use the app's API key:
|
|
129
|
-
|
|
130
|
-
\\\`\\\`\\\`http
|
|
131
|
-
POST ${BASE_URL}/api/payment_intents
|
|
132
|
-
X-API-Key: {app_api_key}
|
|
133
|
-
Content-Type: application/json
|
|
134
|
-
|
|
135
|
-
{
|
|
136
|
-
"email": "user@example.com",
|
|
137
|
-
"amount_cents": 900,
|
|
138
|
-
"description": "Starter plan"
|
|
139
|
-
}
|
|
140
|
-
\\\`\\\`\\\`
|
|
141
|
-
|
|
142
|
-
For subscriptions:
|
|
143
|
-
\\\`\\\`\\\`http
|
|
144
|
-
POST ${BASE_URL}/api/subscriptions
|
|
145
|
-
X-API-Key: {app_api_key}
|
|
146
|
-
Content-Type: application/json
|
|
147
|
-
|
|
148
|
-
{
|
|
149
|
-
"email": "user@example.com",
|
|
150
|
-
"amount_cents": 900,
|
|
151
|
-
"description": "Starter plan",
|
|
152
|
-
"interval": "month"
|
|
153
|
-
}
|
|
154
|
-
\\\`\\\`\\\`
|
|
155
|
-
|
|
156
|
-
The response includes an \\\`approve_url\\\`. Open it in the user's browser — they review and approve the charge. Poll the charge status until \\\`status\\\` is \\\`"approved"\\\` or \\\`"completed"\\\`.
|
|
157
|
-
|
|
158
|
-
**After the charge is approved, tru automatically provisions the user's account on {APP_NAME}.** No additional API call needed — the credentials are created and stored.
|
|
159
|
-
|
|
160
|
-
### Step 3: Retrieve credentials
|
|
161
|
-
|
|
162
|
-
After payment is approved, retrieve the user's {APP_NAME} credentials:
|
|
163
|
-
|
|
164
|
-
\\\`\\\`\\\`http
|
|
165
|
-
GET ${BASE_URL}/api/apps/by-service/{service_name}/credentials/{email}
|
|
166
|
-
X-API-Key: {app_api_key}
|
|
167
|
-
\\\`\\\`\\\`
|
|
168
|
-
|
|
169
|
-
Response:
|
|
170
|
-
\\\`\\\`\\\`json
|
|
171
|
-
{
|
|
172
|
-
"api_key": "app_key_...",
|
|
173
|
-
"account_id": "acct_..."
|
|
174
|
-
}
|
|
175
|
-
\\\`\\\`\\\`
|
|
176
|
-
|
|
177
|
-
Use the returned credentials to call {APP_NAME}'s API on behalf of the user.
|
|
178
|
-
|
|
179
|
-
**If the user hasn't purchased yet**, you can provision manually:
|
|
180
|
-
|
|
181
|
-
\\\`\\\`\\\`http
|
|
182
|
-
POST ${BASE_URL}/api/apps/by-service/{service_name}/provision
|
|
183
|
-
X-API-Key: {app_api_key}
|
|
184
|
-
Content-Type: application/json
|
|
185
|
-
|
|
186
|
-
{
|
|
187
|
-
"email": "user@example.com"
|
|
188
|
-
}
|
|
189
|
-
\\\`\\\`\\\`
|
|
190
|
-
|
|
191
|
-
This creates a free-tier account. The user can upgrade later.`;
|
|
192
87
|
export function computeSectionStatuses(setupProgress) {
|
|
193
88
|
const progress = setupProgress || {};
|
|
194
89
|
return SECTIONS.map((s) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_content.js","sourceRoot":"","sources":["../../src/tools/setup_content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAEpE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,MAAM,CAAC,MAAM,UAAU,GAAG;;;;iBAIT,OAAO;;;OAGjB,CAAC;AAUR,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE;IAC/G,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,EAAE;IACvJ,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"setup_content.js","sourceRoot":"","sources":["../../src/tools/setup_content.ts"],"names":[],"mappings":"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"}
|