get_note_list
Retrieve a list of notes and startup scripts to manage infrastructure configurations on Sakura Cloud.
Instructions
Get list of notes and startup scripts
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "get_note_list"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/server.ts:1847-1864 (handler)Handler for the 'get_note_list' tool. Validates credentials, fetches the list of notes from Sakura Cloud API endpoint '/note', and returns the JSON stringified response as text content.
} else if (request.params.name === 'get_note_list') { try { validateCredentials(); const noteList = await fetchFromSakuraCloud(`/note`); return { content: [ { type: 'text', text: JSON.stringify(noteList, null, 2) } ] }; } catch (error) { console.error('Error calling tool:', error); throw error; } - src/server.ts:1000-1008 (schema)Schema definition and registration of the 'get_note_list' tool in the ListTools response, indicating no input parameters are required.
{ name: 'get_note_list', description: 'Get list of notes and startup scripts', inputSchema: { type: 'object', properties: { }, } }, - src/server.ts:470-487 (helper)Similar logic in ReadResource handler for 'sakura:///note' resource, which also fetches from '/note' endpoint.
} else if (uri === 'sakura:///note') { try { validateCredentials(); const noteData = await fetchFromSakuraCloud('/note'); return { contents: [ { uri, mimeType: 'application/json', text: JSON.stringify(noteData, null, 2) } ] }; } catch (error) { console.error('Error fetching notes:', error); throw error; } - src/server.ts:20-72 (helper)General helper function fetchFromSakuraCloud used by the tool to make authenticated HTTPS requests to Sakura Cloud API.
async function fetchFromSakuraCloud(path: string, isPublicAPI: boolean = false, zone: string = DEFAULT_ZONE, method: string = 'GET', bodyData?: any): Promise<any> { return new Promise((resolve, reject) => { const basePath = isPublicAPI ? '/cloud/api/cloud/1.1' : `/cloud/zone/${zone}/api/cloud/1.1`; const options = { hostname: 'secure.sakura.ad.jp', port: 443, path: `${basePath}${path}`, method: method, headers: { 'Accept': 'application/json', 'Authorization': '', 'Content-Type': 'application/json' } }; // Add authorization for non-public APIs if (!isPublicAPI) { options.headers['Authorization'] = `Basic ${Buffer.from(`${SACLOUD_API_TOKEN}:${SACLOUD_API_SECRET}`).toString('base64')}`; } const req = https.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { try { if (data) { const parsedData = JSON.parse(data); resolve(parsedData); } else { resolve({}); } } catch (err) { reject(new Error(`Failed to parse response: ${err}`)); } }); }); req.on('error', (error) => { reject(error); }); if (bodyData && (method === 'POST' || method === 'PUT')) { req.write(JSON.stringify(bodyData)); } req.end(); }); }