updated
Browse files- src/agritech_tools.ts +15 -1
- src/data/atm_withdrawal_limit.txt +10 -0
- src/data/card_lock.txt +11 -0
- src/data/card_loststolen.txt +9 -0
- src/data/card_pin_reset.txt +13 -0
- src/data/card_spending_limit.txt +9 -0
- src/data/card_status.txt +13 -0
- src/data/card_travel_flag.txt +14 -0
- src/data/card_txn_category.txt +9 -0
- src/data/card_txn_dispute.txt +6 -0
- src/data/card_txn_history.txt +6 -0
- src/data/card_unlock.txt +11 -0
- src/data/card_unlock_verif.txt +13 -0
- src/data/lock_all_cards.txt +10 -0
- src/data/pers_fin_health.txt +34 -0
- src/data/pers_savings_potential.txt +28 -0
- src/data/product.txt +13 -0
- src/index.ts +2 -0
- src/pymttech_tools.ts +78 -0
src/agritech_tools.ts
CHANGED
|
@@ -3,6 +3,9 @@ import { z } from 'zod';
|
|
| 3 |
import { readFileSync } from 'fs';
|
| 4 |
import { join } from 'path';
|
| 5 |
|
|
|
|
|
|
|
|
|
|
| 6 |
const agriCurrWeatherData = readFileSync(join(__dirname,'data/current_weather.txt'), 'utf-8');
|
| 7 |
const agriCropData = readFileSync(join(__dirname,'data/crop.txt'), 'utf-8');
|
| 8 |
const agriIrrigStatusData = readFileSync(join(__dirname,'data/irrigation_status.txt'), 'utf-8');
|
|
@@ -14,7 +17,18 @@ const agriPesticidesData = readFileSync(join(__dirname, 'data/pesticides.txt'),
|
|
| 14 |
const agriEquipFaqData = readFileSync(join(__dirname, 'data/agri_equipment_faq.txt'), 'utf-8');
|
| 15 |
|
| 16 |
export default async function load_agri_tools(server: FastMCP) {
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
server.addTool({
|
| 19 |
name: "get_agri_field_weather",
|
| 20 |
description: "Get field weather",
|
|
|
|
| 3 |
import { readFileSync } from 'fs';
|
| 4 |
import { join } from 'path';
|
| 5 |
|
| 6 |
+
|
| 7 |
+
const productData = readFileSync(join(__dirname, 'data/product.txt'), 'utf-8');
|
| 8 |
+
|
| 9 |
const agriCurrWeatherData = readFileSync(join(__dirname,'data/current_weather.txt'), 'utf-8');
|
| 10 |
const agriCropData = readFileSync(join(__dirname,'data/crop.txt'), 'utf-8');
|
| 11 |
const agriIrrigStatusData = readFileSync(join(__dirname,'data/irrigation_status.txt'), 'utf-8');
|
|
|
|
| 17 |
const agriEquipFaqData = readFileSync(join(__dirname, 'data/agri_equipment_faq.txt'), 'utf-8');
|
| 18 |
|
| 19 |
export default async function load_agri_tools(server: FastMCP) {
|
| 20 |
+
|
| 21 |
+
server.addTool({
|
| 22 |
+
name: "get_agri_product_info",
|
| 23 |
+
description: "Get agricultural product information",
|
| 24 |
+
parameters: z.object({
|
| 25 |
+
product_query: z.string()
|
| 26 |
+
}),
|
| 27 |
+
execute: async ({ product_query }) => ({
|
| 28 |
+
content: [{ type: "text", text: `Info for ${product_query}: ${productData}` }]
|
| 29 |
+
})
|
| 30 |
+
});
|
| 31 |
+
|
| 32 |
server.addTool({
|
| 33 |
name: "get_agri_field_weather",
|
| 34 |
description: "Get field weather",
|
src/data/atm_withdrawal_limit.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Debit Card ****4782 (Visa)
|
| 5 |
+
Current ATM Limits:
|
| 6 |
+
- Per transaction: ₹400
|
| 7 |
+
- Daily: ₹800
|
| 8 |
+
- Can be increased to: ₹1,500 daily maximum
|
| 9 |
+
|
| 10 |
+
Action: User requesting increase
|
src/data/card_lock.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (biometric)
|
| 4 |
+
User Account: John Smith
|
| 5 |
+
Available Cards:
|
| 6 |
+
- Debit Card ****4782 (Visa) - Status: ACTIVE
|
| 7 |
+
- Credit Card ****3901 (Mastercard) - Status: ACTIVE
|
| 8 |
+
|
| 9 |
+
Action: Lock debit card ****4782
|
| 10 |
+
Timestamp: Feb 8, 2026 2:45 PM
|
| 11 |
+
Result: SUCCESS - Card locked
|
src/data/card_loststolen.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
User has multiple cards - need clarification
|
| 5 |
+
Available Cards:
|
| 6 |
+
- Debit Card ****4782 (Visa) - ACTIVE
|
| 7 |
+
- Credit Card ****3901 (Mastercard) - ACTIVE
|
| 8 |
+
|
| 9 |
+
Action: Requires card selection and confirmation
|
src/data/card_pin_reset.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Debit Card ****4782 (Visa)
|
| 5 |
+
Status: ACTIVE
|
| 6 |
+
|
| 7 |
+
Security Requirement: Multi-factor authentication needed
|
| 8 |
+
Available Verification Methods:
|
| 9 |
+
- Text message to ***-***-5678
|
| 10 |
+
- Email to j***n@email.com
|
| 11 |
+
- Authenticator app
|
| 12 |
+
|
| 13 |
+
Action: Initiate PIN reset process
|
src/data/card_spending_limit.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Debit Card ****4782 (Visa)
|
| 5 |
+
Current Daily Limit: ₹2,000 (default)
|
| 6 |
+
|
| 7 |
+
Action: Set custom daily limit to ₹500
|
| 8 |
+
Result: SUCCESS
|
| 9 |
+
Effective: Immediately
|
src/data/card_status.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Credit Card ****3901 (Mastercard)
|
| 5 |
+
Status: ACTIVE
|
| 6 |
+
Last Transaction: ₹42.18 at Whole Foods, Feb 8, 2026 1:30 PM
|
| 7 |
+
Available Credit: ₹8,245.00
|
| 8 |
+
Credit Limit: ₹10,000.00
|
| 9 |
+
Spending Controls:
|
| 10 |
+
- ATM withdrawals: ENABLED
|
| 11 |
+
- Online purchases: ENABLED
|
| 12 |
+
- International: DISABLED
|
| 13 |
+
- Contactless: ENABLED
|
src/data/card_travel_flag.txt
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Cards:
|
| 5 |
+
- Debit Card ****4782 (Visa) - International DISABLED
|
| 6 |
+
- Credit Card ****3901 (Mastercard) - International DISABLED
|
| 7 |
+
|
| 8 |
+
Travel Dates: Feb 15-25, 2026
|
| 9 |
+
Destination: Japan
|
| 10 |
+
|
| 11 |
+
Recommended Actions:
|
| 12 |
+
- Enable international transactions
|
| 13 |
+
- Set travel notice
|
| 14 |
+
- Review foreign transaction fees
|
src/data/card_txn_category.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Credit Card ****3901 (Mastercard)
|
| 5 |
+
Current Setting: International transactions DISABLED
|
| 6 |
+
|
| 7 |
+
Action: Enable international transactions
|
| 8 |
+
Result: SUCCESS
|
| 9 |
+
Note: Foreign transaction fees may apply (2.5%)
|
src/data/card_txn_dispute.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
|
| 5 |
+
Action: This requires fraud team review
|
| 6 |
+
Escalation needed
|
src/data/card_txn_history.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
|
| 5 |
+
Security Note: Voice assistants may be in shared/public spaces
|
| 6 |
+
Sensitive information: Transaction history includes merchant names and amounts
|
src/data/card_unlock.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Credit Card ****3901 (Mastercard)
|
| 5 |
+
Current Status: LOCKED (User-initiated)
|
| 6 |
+
Locked Since: Feb 7, 2026 8:30 PM
|
| 7 |
+
Locked By: User (mobile app)
|
| 8 |
+
Reason: Precautionary lock
|
| 9 |
+
|
| 10 |
+
Action: Unlock card ****3901
|
| 11 |
+
Result: SUCCESS - Card unlocked
|
src/data/card_unlock_verif.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
Card: Debit Card ****4782 (Visa)
|
| 5 |
+
Current Status: FRAUD HOLD (System-initiated)
|
| 6 |
+
Locked Since: Feb 8, 2026 1:15 AM
|
| 7 |
+
Reason: Suspicious transaction detected
|
| 8 |
+
Suspicious Activity:
|
| 9 |
+
- Transaction: $847.32 at \"Tech Gadgets Online\" - Miami, FL
|
| 10 |
+
- Flagged: User location at time was San Francisco, CA
|
| 11 |
+
|
| 12 |
+
Action: REQUIRES ADDITIONAL VERIFICATION
|
| 13 |
+
Next Step: Text verification code sent to phone ***-***-5678
|
src/data/lock_all_cards.txt
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
User Authentication: VERIFIED (voice)
|
| 4 |
+
User Cards:
|
| 5 |
+
- Debit Card ****4782 (Visa) - ACTIVE
|
| 6 |
+
- Credit Card ****3901 (Mastercard) - ACTIVE
|
| 7 |
+
- Business Credit Card ****7215 (Amex) - ACTIVE
|
| 8 |
+
|
| 9 |
+
Action: Lock all 3 cards
|
| 10 |
+
Result: SUCCESS
|
src/data/pers_fin_health.txt
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
Financial Summary - February 2026 (Day 8 of 28):
|
| 4 |
+
|
| 5 |
+
Income (MTD):
|
| 6 |
+
- Salary: ₹60,000 (deposited Feb 1)
|
| 7 |
+
- Freelance: ₹8,500
|
| 8 |
+
Total Income: ₹68,500
|
| 9 |
+
|
| 10 |
+
Spending (MTD): ₹34,680
|
| 11 |
+
Breakdown:
|
| 12 |
+
- Housing: ₹22,000 (rent)
|
| 13 |
+
- Food & Dining: ₹5,850
|
| 14 |
+
- Transportation: ₹2,720 (Ola/Metro/Petrol)
|
| 15 |
+
- Shopping: ₹1,840
|
| 16 |
+
- Entertainment: ₹1,260 (OTT/Movies/Dining)
|
| 17 |
+
- Subscriptions: ₹1,010
|
| 18 |
+
|
| 19 |
+
Savings (MTD): ₹4,700 (auto-transfer to SIP/RD)
|
| 20 |
+
|
| 21 |
+
Projections:
|
| 22 |
+
- Projected Month-End Balance: ₹54,250
|
| 23 |
+
- Projected Total Spending: ₹74,800
|
| 24 |
+
- Projected Savings: ₹12,500 (18.2% of income)
|
| 25 |
+
|
| 26 |
+
Comparison to January 2026:
|
| 27 |
+
- Spending pace: 12% lower
|
| 28 |
+
- Savings rate: Up from 14% to projected 18%
|
| 29 |
+
|
| 30 |
+
Financial Health Score: 78/100 (up from 74 last month)
|
| 31 |
+
|
| 32 |
+
Goals:
|
| 33 |
+
- Emergency Fund: ₹80,000 / ₹1,80,000 (44.4%)
|
| 34 |
+
- Vacation Fund: ₹14,600 / ₹50,000 (29.2%)
|
src/data/pers_savings_potential.txt
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
Detailed Spending Analysis - Last 90 Days:
|
| 4 |
+
|
| 5 |
+
Recurring Subscriptions (Monthly):
|
| 6 |
+
- Netflix: ₹649 (Premium plan)
|
| 7 |
+
- Spotify: ₹119 (Premium)
|
| 8 |
+
- Cult.fit: ₹1,799 (Gym membership)
|
| 9 |
+
- Adobe Creative Cloud: ₹1,675 (last used 45 days ago)
|
| 10 |
+
- The Hindu: ₹299 (Digital subscription)
|
| 11 |
+
- Zomato Gold: ₹149
|
| 12 |
+
- Swiggy One: ₹299 (3-month plan, ₹99/month avg)
|
| 13 |
+
Total Subscriptions: ₹4,989/month
|
| 14 |
+
|
| 15 |
+
Spending Patterns:
|
| 16 |
+
- Coffee shops (Starbucks/Blue Tokai): ₹3,450/month avg (23 visits/month, avg ₹150/visit)
|
| 17 |
+
- Lunch out: ₹5,400/month avg (12 workdays/month, avg ₹450/meal)
|
| 18 |
+
- Impulse shopping (under ₹500): ₹2,800/month avg
|
| 19 |
+
- Unused gym visits: Last check-in 38 days ago
|
| 20 |
+
|
| 21 |
+
Potential Savings Opportunities:
|
| 22 |
+
1. Adobe Creative Cloud: ₹1,675/month (unused)
|
| 23 |
+
2. Coffee: ₹2,300/month (reduce to 2x/week saves 60%)
|
| 24 |
+
3. Meal prep vs lunch out: ₹3,600/month (pack 8/12 lunches)
|
| 25 |
+
4. Gym membership: ₹1,799/month (not using, or switch to local gym ₹800/month)
|
| 26 |
+
5. Zomato Gold + Swiggy One: ₹250/month (keep only one)
|
| 27 |
+
|
| 28 |
+
Total Monthly Savings Potential: ₹9,624-10,500 without major lifestyle changes
|
src/data/product.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
Product: Pro-Start 10-34-0 Liquid Starter Fertilizer
|
| 4 |
+
Analysis: 10% Nitrogen, 34% Phosphate (P2O5)
|
| 5 |
+
Density: 11.7 lbs/gallon
|
| 6 |
+
Recommended Rates:
|
| 7 |
+
- Standard application: 5-7 gallons/acre (2x2 placement)
|
| 8 |
+
- High-yield systems: 7-10 gallons/acre (2x2 placement)
|
| 9 |
+
- Broadcast: Not recommended for starter
|
| 10 |
+
Placement: 2 inches to side, 2 inches below seed
|
| 11 |
+
Compatibility: Compatible with most herbicides (see tank mix guide)
|
| 12 |
+
Storage: Protect from freezing
|
| 13 |
+
Coverage: 1 ton (275 gal) covers 40-55 acres at standard rate
|
src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { FastMCP } from "fastmcp";
|
|
| 2 |
import { z } from "zod";
|
| 3 |
import load_fintech_tools from './fintech_tools'
|
| 4 |
import load_agritech_tools from './agritech_tools'
|
|
|
|
| 5 |
|
| 6 |
// Add timestamps to logs
|
| 7 |
const originalLog = console.log;
|
|
@@ -22,6 +23,7 @@ const server = new FastMCP({
|
|
| 22 |
(async () => {
|
| 23 |
await load_fintech_tools(server);
|
| 24 |
await load_agritech_tools(server);
|
|
|
|
| 25 |
|
| 26 |
server.start({
|
| 27 |
transportType: "httpStream",
|
|
|
|
| 2 |
import { z } from "zod";
|
| 3 |
import load_fintech_tools from './fintech_tools'
|
| 4 |
import load_agritech_tools from './agritech_tools'
|
| 5 |
+
import load_pymttech_tools from './pymttech_tools'
|
| 6 |
|
| 7 |
// Add timestamps to logs
|
| 8 |
const originalLog = console.log;
|
|
|
|
| 23 |
(async () => {
|
| 24 |
await load_fintech_tools(server);
|
| 25 |
await load_agritech_tools(server);
|
| 26 |
+
await load_pymttech_tools(server);
|
| 27 |
|
| 28 |
server.start({
|
| 29 |
transportType: "httpStream",
|
src/pymttech_tools.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { FastMCP } from 'fastmcp';
|
| 2 |
+
import { z } from 'zod';
|
| 3 |
+
import { readFileSync } from 'fs';
|
| 4 |
+
import { join } from 'path';
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
const personalFinHealthData = readFileSync(join(__dirname, 'data/pers_fin_health.txt'), 'utf-8');
|
| 8 |
+
const personalSavingsPotentialData = readFileSync(join(__dirname, 'data/pers_savings_potential.txt'), 'utf-8');
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
const cardLockData = readFileSync(join(__dirname, 'data/card_lock.txt'), 'utf-8')
|
| 12 |
+
const allCardsLockData = readFileSync(join(__dirname, 'data/lock_all_cards.txt'), 'utf-8')
|
| 13 |
+
const cardUnlockData = readFileSync(join(__dirname, 'data/card_unlock.txt'), 'utf-8')
|
| 14 |
+
const cardUnlockVerifData = readFileSync(join(__dirname, 'data/card_unlock_verif.txt'), 'utf-8')
|
| 15 |
+
const cardPinResetData = readFileSync(join(__dirname, 'data/card_pin_reset.txt'), 'utf-8')
|
| 16 |
+
const cardLostStolenData = readFileSync(join(__dirname, 'data/card_loststolen.txt'), 'utf-8')
|
| 17 |
+
const cardStatusData = readFileSync(join(__dirname, 'data/card_status.txt'), 'utf-8')
|
| 18 |
+
const cardEnableTxnCatData = readFileSync(join(__dirname, 'data/card_txn_category.txt'), 'utf-8')
|
| 19 |
+
const cardSpendingLimitData = readFileSync(join(__dirname, 'data/card_spending_limit.txt'), 'utf-8')
|
| 20 |
+
const cardTravelFlagData = readFileSync(join(__dirname, 'data/card_travel_flag.txt'), 'utf-8')
|
| 21 |
+
const cardTxnDisputeData = readFileSync(join(__dirname, 'data/card_txn_dispute.txt'), 'utf-8')
|
| 22 |
+
const atmWithdrawalLimitData = readFileSync(join(__dirname, 'data/atm_withdrawal_limit.txt'), 'utf-8')
|
| 23 |
+
const cardTxnHistoryData = readFileSync(join(__dirname, 'data/card_txn_history.txt'), 'utf-8')
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
export default async function load_paytech_tools(server: FastMCP) {
|
| 28 |
+
server.addTool({
|
| 29 |
+
name: "get_financial_health",
|
| 30 |
+
description: "Get personal financial health",
|
| 31 |
+
parameters: z.object({}),
|
| 32 |
+
execute: async () => ({
|
| 33 |
+
content: [{ type: "text", text: personalFinHealthData }],
|
| 34 |
+
})
|
| 35 |
+
});
|
| 36 |
+
|
| 37 |
+
server.addTool({
|
| 38 |
+
name: "get_savings_potential",
|
| 39 |
+
description: "Get personal savings potential",
|
| 40 |
+
parameters: z.object({}),
|
| 41 |
+
execute: async () => ({
|
| 42 |
+
content: [{ type: "text", text: personalSavingsPotentialData }],
|
| 43 |
+
})
|
| 44 |
+
});
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
server.addTool({
|
| 50 |
+
name: "manage_card",
|
| 51 |
+
description: "Manage all card operations",
|
| 52 |
+
parameters: z.object({
|
| 53 |
+
action: z.string(),
|
| 54 |
+
card_type: z.string()
|
| 55 |
+
}),
|
| 56 |
+
|
| 57 |
+
execute: async ({ action, card_type }) => (
|
| 58 |
+
|
| 59 |
+
// action.toLowerCase().indexOf('unlock') > -1 ? { content: [{ type: "text", text: cardUnlockData }] } : { content: [{ type: "text", text: cardLockData }] }
|
| 60 |
+
|
| 61 |
+
action.toLowerCase().indexOf('transaction') > -1 ? {content: [{ type: "text", text: cardTxnHistoryData }]}
|
| 62 |
+
: action.toLowerCase().indexOf('withdrawal') > -1 ? {content: [{ type: "text", text: atmWithdrawalLimitData }]}
|
| 63 |
+
: action.toLowerCase().indexOf('dispute') > -1 ? {content: [{ type: "text", text: cardTxnDisputeData }]}
|
| 64 |
+
: action.toLowerCase().indexOf('travel') > -1 ? {content: [{ type: "text", text: cardTravelFlagData }]}
|
| 65 |
+
: action.toLowerCase().indexOf('spending') > -1 ? {content: [{ type: "text", text: cardSpendingLimitData }]}
|
| 66 |
+
: action.toLowerCase().indexOf('transaction') > -1 ? {content: [{ type: "text", text: cardEnableTxnCatData }]}
|
| 67 |
+
: card_type.toLowerCase().indexOf('credit') > -1 && action.toLowerCase().indexOf('status') > -1 ? {content: [{ type: "text", text: cardStatusData }]}
|
| 68 |
+
: action.toLowerCase().indexOf('lost') > -1 || action.toLowerCase().indexOf('stolen') > -1 ? {content: [{ type: "text", text: cardLostStolenData }]}
|
| 69 |
+
: action.toLowerCase().indexOf('reset') > -1 ? {content: [{ type: "text", text: cardPinResetData }]}
|
| 70 |
+
: card_type.toLowerCase().indexOf('debit') > -1 ? {content: [{ type: "text", text: cardUnlockVerifData }]}
|
| 71 |
+
: action.toLowerCase().indexOf('unlock') > -1 ? {content: [{ type: "text", text: cardUnlockData }]}
|
| 72 |
+
: action.toLowerCase().indexOf('all') > -1 ? {content: [{ type: "text", text: allCardsLockData }]}: {content: [{ type: "text", text: cardLockData }]}
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
)
|
| 76 |
+
});
|
| 77 |
+
|
| 78 |
+
}
|