Repository navigation
Expand file tree
/
Copy pathchatgpt-app-submission.json
More file actions
164 lines (164 loc) · 9.23 KB
/
Copy pathchatgpt-app-submission.json
File metadata and controls
164 lines (164 loc) · 9.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
"$schema": "https://developers.openai.com/apps-sdk/schemas/chatgpt-app-submission.v1.json",
"schema_version": 1,
"app_info": {
"display_name": "Solana MCP by Vybe",
"subtitle": "Find wallets, trades, markets",
"description": "Solana MCP by Vybe is a developer toolkit for live Solana data: wallets, trades, markets, PnL, transfers, on-chain activity, signable swaps, and API tools. Ask for a wallet’s balances, realized and unrealized PnL, counterparties, or token holdings; look up token prices, holders, liquidity, and candles; scan markets, DEX activity, trade history, and transfers; or pull top traders and labeled accounts without leaving ChatGPT.\n\nBrowse the Vybe API catalog, inspect an endpoint’s parameters, then run authenticated live queries and get real results back. When you need a swap, the app can return an unsigned transaction to sign in your own wallet. Connect with OAuth on mcp.vybenetwork.xyz. It does not take private keys, and it does not broadcast transactions for you.",
"category": "DEVELOPER_TOOLS"
},
"tools": {
"list-endpoints": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Only returns the catalog of Vybe API paths, HTTP methods, and summaries and does not create or update any data.",
"open_world_justification": "Reads the server's OpenAPI catalog and does not write to public internet state or third-party systems.",
"destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions."
}
},
"search-endpoints": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Only searches OpenAPI paths, operations, and parameters by keyword and returns matches without modifying data.",
"open_world_justification": "Searches local API metadata and does not write to public internet state or third-party systems.",
"destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions."
}
},
"get-endpoint": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Only retrieves OpenAPI details for one path and method, including parameters, schemas, and auth, without modifying data.",
"open_world_justification": "Returns stored API specification metadata and does not write to public internet state or third-party systems.",
"destructive_justification": "Does not delete, overwrite, revoke access, or perform irreversible actions."
}
},
"query-vybe-api": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Issues GET requests only. The tool takes no HTTP method parameter and the server always sends GET, so it cannot create, update, or delete any data.",
"open_world_justification": "Calls the live Vybe Solana API over the public internet and returns on-chain data about arbitrary wallets, tokens, and markets.",
"destructive_justification": "Read-only GET requests cannot delete, overwrite, revoke access, or perform irreversible actions."
}
},
"query-vybe-api-batch": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Restricted by the server to the five /v4/wallets/batch/* read endpoints, which accept a POST body only to carry the list of wallet addresses and return balances and history without modifying data.",
"open_world_justification": "Calls the live Vybe Solana API over the public internet and returns on-chain data for caller-supplied wallet addresses.",
"destructive_justification": "The allowlisted batch endpoints only read wallet data and cannot delete, overwrite, or revoke anything."
}
},
"build-vybe-transaction": {
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
},
"justifications": {
"read_only_justification": "Constructs a new unsigned Solana transaction rather than only reading existing data, so it is not a pure read.",
"open_world_justification": "Calls the live Vybe Solana API over the public internet to price routes and build the transaction against current on-chain state.",
"destructive_justification": "Marked destructive so the user is always prompted before a swap, token-account close, or MEV withdrawal payload is produced. The tool itself returns only a base64 unsigned transaction and never signs, submits, or broadcasts it, and never accepts private keys."
}
},
"pay-with-x402": {
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
},
"justifications": {
"read_only_justification": "Only returns x402 pay-per-call integration guidance and does not sign, submit, or settle any payment.",
"open_world_justification": "Returns static integration instructions and does not write to public internet state or third-party systems.",
"destructive_justification": "Does not delete, overwrite, revoke access, or move funds."
}
}
},
"test_cases": [
{
"description": "List the full Vybe API catalog from schema discovery.",
"user_prompt": "List all available Vybe API endpoints.",
"file_attachment_urls": null,
"tools_triggered": "list-endpoints",
"expected_output": "Returns 35+ Vybe API paths with HTTP methods and summaries across tokens, wallets, markets, trades, transfers, and trading utilities.",
"expected_output_url": null
},
{
"description": "Search the catalog for token-holder endpoints.",
"user_prompt": "Find all Vybe endpoints related to token holders.",
"file_attachment_urls": null,
"tools_triggered": "search-endpoints",
"expected_output": "Returns matching holder endpoints such as holder count history and top holders, with paths that can be passed to get-endpoint.",
"expected_output_url": null
},
{
"description": "Inspect the Wallet PnL endpoint contract before querying it.",
"user_prompt": "Show me the parameters for the Wallet PnL endpoint.",
"file_attachment_urls": null,
"tools_triggered": "get-endpoint",
"expected_output": "Returns the OpenAPI spec for GET /v4/wallets/{ownerAddress}/pnl, including ownerAddress, resolution, sorting, pagination, auth, and response fields.",
"expected_output_url": null
},
{
"description": "Run a live leaderboard query against the Vybe API.",
"user_prompt": "Get the top 3 Solana traders by realized PnL today.",
"file_attachment_urls": null,
"tools_triggered": "query-vybe-api",
"expected_output": "Returns three trader wallets with realized PnL, win rate, volume, and related metrics from the live Top Traders endpoint.",
"expected_output_url": null
},
{
"description": "Explain pay-per-call access when no API key is available.",
"user_prompt": "I don't have a Vybe API key. How can an AI agent pay per call in USDC to query token details?",
"file_attachment_urls": null,
"tools_triggered": "pay-with-x402",
"expected_output": "Returns x402 integration guidance, including the x402 API base URL, 402 payment flow, SDK usage, and that this tool itself does not move funds.",
"expected_output_url": null
}
],
"negative_test_cases": [
{
"description": "Do not trigger for unrelated calendar requests.",
"user_prompt": "What meetings do I have tomorrow?",
"file_attachment_urls": null,
"tools_triggered": null,
"expected_output": "The app should not be invoked because calendar lookup is outside its Solana API workflows.",
"expected_output_url": null
},
{
"description": "Do not trigger for non-Solana chain analytics.",
"user_prompt": "Show me the top Ethereum token holders for USDC on Ethereum mainnet.",
"file_attachment_urls": null,
"tools_triggered": null,
"expected_output": "The app should not be invoked because it only covers Vybe's Solana API, not Ethereum holder data.",
"expected_output_url": null
},
{
"description": "Do not trigger for signing or broadcasting transactions with user keys.",
"user_prompt": "Here is my Solana private key. Sign and send a swap transaction for me now.",
"file_attachment_urls": null,
"tools_triggered": null,
"expected_output": "The app should not be invoked to collect keys or broadcast transactions; it can only return unsigned swap payloads through the documented API when explicitly asked for quotes or transaction builds.",
"expected_output_url": null
}
]
}