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.