PageSourceSearch

https://telos.net/js/webmcp.js

js telos.net collected 2026-09-24 20:31:10 UTC 4,572 bytes, 147 lines download raw bytes

1(function () {
2  const resourceDirectory = {
3    website: {
4      title: 'Telos website',
5      url: 'https://telos.net/',
6      description: 'Main Telos website and product overview.',
7    },
8    llms: {
9      title: 'Telos AI resource map',
10      url: 'https://telos.net/llms.txt',
11      description: 'Plain-text Telos resource map for agents and answer engines.',
12    },
13    privacy: {
14      title: 'Telos Privacy',
15      url: 'https://telos.net/getting-started-with-privacy',
16      description: 'Telos Privacy overview, including shielded transfers and zkWallet.',
17    },
18    privacyDocs: {
19      title: 'Telos Privacy docs',
20      url: 'https://docs.telos.net/privacy',
21      description: 'Documentation for Telos Privacy, shielded pools, deposits, and withdrawals.',
22    },
23    evm: {
24      title: 'Telos EVM',
25      url: 'https://telos.net/getting-started-with-evm',
26      description: 'Ethereum-compatible execution on Telos.',
27    },
28    zero: {
29      title: 'Telos Zero',
30      url: 'https://telos.net/getting-started-with-zero',
31      description: 'Native Telos network and governance layer.',
32    },
33    docs: {
34      title: 'Telos developer docs',
35      url: 'https://docs.telos.net/',
36      description: 'Official Telos documentation for developers and users.',
37    },
38    zkwallet: {
39      title: 'zkWallet',
40      url: 'https://zkwallet.telos.net/',
41      description: 'Telos privacy wallet entry point.',
42    },
43    teloswap: {
44      title: 'Teloswap',
45      url: 'https://swap.telos.net/',
46      description: 'Swap and provide liquidity on Telos.',
47    },
48    bridge: {
49      title: 'Telos Bridge',
50      url: 'https://bridge.telos.net/',
51      description: 'Bridge assets into Telos.',
52    },
53    wallet: {
54      title: 'Telos Wallet',
55      url: 'https://wallet.telos.net/',
56      description: 'Wallet for staking, account management, and public network activity.',
57    },
58    explorer: {
59      title: 'Telos explorer',
60      url: 'https://www.teloscan.io/',
61      description: 'Explorer for TelosEVM activity and contract lookup.',
62    },
63    ecosystem: {
64      title: 'Telos ecosystem',
65      url: 'https://telos.net/ecosystem',
66      description: 'Apps, wallets, bridges, DeFi protocols, and other Telos ecosystem projects.',
67    },
68    blog: {
69      title: 'Telos blog',
70      url: 'https://telos.net/blog',
71      description: 'Telos announcements, guides, and ecosystem updates.',
72    },
73  }
74
75  const resourceTopics = Object.keys(resourceDirectory)
76  const tools = [
77    {
78      name: 'telos-find-resource',
79      title: 'Find Telos resource',
80      description: 'Return an official Telos public URL for a requested topic. This is read-only and does not perform wallet, bridge, swap, or transaction actions.',
81      inputSchema: {
82        type: 'object',
83        properties: {
84          topic: {
85            type: 'string',
86            enum: resourceTopics,
87            description: 'The Telos topic to look up.',
88          },
89        },
90        required: ['topic'],
91        additionalProperties: false,
92      },
93      annotations: {
94        readOnlyHint: true,
95        untrustedContentHint: false,
96      },
97      execute: async ({ topic }) => resourceDirectory[topic] || null,
98    },
99    {
100      name: 'telos-list-resources',
101      title: 'List Telos resources',
102      description: 'List official Telos public resources advertised by the homepage. This is read-only.',
103      inputSchema: {
104        type: 'object',
105        properties: {},
106        additionalProperties: false,
107      },
108      annotations: {
109        readOnlyHint: true,
110        untrustedContentHint: false,
111      },
112      execute: async () => Object.values(resourceDirectory),
113    },
114  ]
115
116  function registerWithCurrentWebMcp() {
117    const modelContext = globalThis.document && globalThis.document.modelContext
118    if (!modelContext || typeof modelContext.registerTool !== 'function') {
119      return false
120    }
121
122    tools.forEach((tool) => modelContext.registerTool(tool))
123    return true
124  }
125
126  function registerWithLegacyWebMcp() {
127    const modelContext = globalThis.navigator && globalThis.navigator.modelContext
128    if (!modelContext || typeof modelContext.provideContext !== 'function') {
129      return false
130    }
131
132    modelContext.provideContext({
133      name: 'telos-public-resources',
134      description: 'Read-only public resource discovery for Telos.',
135      tools,
136    })
137
138    return true
139  }
140
141  try {
142    registerWithCurrentWebMcp()
143    registerWithLegacyWebMcp()
144  } catch (_error) {
145    // Experimental browser APIs should never block the site from rendering.
146  }
147})()

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.