UNPKG

@toriihq/torii-mcp

Version:

Model Context Protocol server for Torii API

147 lines 4.7 kB
const parseFilters = (param) => { try { const formattedValue = JSON.parse(param.value); return Object.keys(formattedValue) .map((key) => { const value = formattedValue[key]; return `${key}=${value}`; }) .join('&'); } catch (e) { console.log('error', e); return ''; } }; const formatFilters = (param) => { try { const formattedValue = JSON.parse(param.value); console.log(formattedValue); const filters = formattedValue.map((filter) => { const formattedFilter = { key: { value: filter.key }, op: { value: filter.op } }; if (filter.value !== undefined) { formattedFilter.value = filter.value; } return formattedFilter; }); return `${param.name}=${encodeURIComponent(JSON.stringify(filters))}`; } catch (e) { console.log('error', e); return ''; } }; export const FUNCTION_NAME_TO_API_PARAMS = { list_apps: (parameters = []) => { let query = parameters .map((p) => { if (p.name === 'aggs') { return `${p.name}=${encodeURIComponent(p.value)}`; } if (p.name === 'baseFilters') { return parseFilters(p); } else if (p.name === 'filters') { return formatFilters(p); } return `${p.name}=${p.value}`; }) .filter(Boolean) .join('&'); if (query.includes('aggs')) { query = query.concat('&size=1'); } else { query = query.concat('&size=1000'); } console.log(query); return { method: 'GET', path: `apps?${query}`, headers: { 'X-API-VERSION': '1.1' } }; }, get_app_fields: () => ({ method: 'GET', path: 'apps/fields' }), list_users: (parameters = []) => { let query = parameters .map((p) => { if (p.name === 'aggs') { return `${p.name}=${encodeURIComponent(p.value.trim())}`; } if (p.name === 'baseFilters') { return parseFilters(p); } else if (p.name === 'filters') { return formatFilters(p); } return `${p.name}=${p.value}`; }) .filter(Boolean) .join('&'); if (query.includes('aggs')) { query = query.concat('&size=1'); } else { query = query.concat('&size=1000'); } return { method: 'GET', path: `users?${query}` }; }, get_user_by_id: (parameters = []) => { const idParam = parameters.find((p) => p.name === 'id'); if (!idParam) { throw new Error('User ID is required'); } return { method: 'GET', path: `users/${idParam.value}` }; }, get_user_fields: () => ({ method: 'GET', path: 'users/fields' }), list_contracts: (parameters = []) => { const query = parameters .map((p) => { if (p.name === 'filters') { return parseFilters(p); } return `${p.name}=${p.value}`; }) .join('&'); return { method: 'GET', path: `contracts?${query}` }; }, get_contract_by_id: (parameters = []) => { const { id, query } = parameters.reduce(({ id, query }, p) => { if (p.name === 'id') { id = p.value; } else { const param = `${p.name}=${p.value}`; query = query ? `${query}&${param}` : param; } return { id, query }; }, { id: null, query: '' }); if (!id) { throw new Error('Contract ID is required'); } const params = query ? `?${query}` : ''; return { method: 'GET', path: `contracts/${id}${params}` }; }, get_contract_fields: () => ({ method: 'GET', path: `contracts/fields` }), get_audit_logs: (parameters = []) => { const defaultSize = { name: 'size', value: '1000' }; const query = [defaultSize] .concat(parameters) .map((p) => { if (p.name === 'filters') { return parseFilters(p); } return `${p.name}=${p.value}`; }) .join('&'); return { method: 'GET', path: `audit?${query}`, headers: { 'Accept-Encoding': 'gzip' } }; } }; //# sourceMappingURL=filters.js.map