z90486091 commited on
Commit
d94decc
·
1 Parent(s): 3ee1dfd
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
+ }