@toriihq/torii-mcp
Version:
Model Context Protocol server for Torii API
147 lines • 4.7 kB
JavaScript
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