@cben0ist/ascend-mcp-server 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.js +1 -1
- package/src/tools/applications.js +50 -0
- package/.env.example +0 -10
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -46,4 +46,54 @@ export function registerApplicationTools(server, client) {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
|
+
|
|
50
|
+
server.tool(
|
|
51
|
+
'create_application',
|
|
52
|
+
'Create a new job application in Ascend. Requires job title, company name, and job description.',
|
|
53
|
+
{
|
|
54
|
+
job_title: z.string().min(1).max(500).describe('Job title'),
|
|
55
|
+
company_name: z.string().min(1).max(500).describe('Company name'),
|
|
56
|
+
job_description: z.string().min(1).max(50000).describe('Full job description text'),
|
|
57
|
+
job_url: z.string().url().optional().describe('URL of the job posting'),
|
|
58
|
+
notes: z.string().max(10000).optional().describe('Personal notes about this application'),
|
|
59
|
+
date_applied: z.string().optional().describe('Date applied (ISO format, defaults to today)'),
|
|
60
|
+
},
|
|
61
|
+
async (params) => {
|
|
62
|
+
try {
|
|
63
|
+
const { data } = await client.post('/applications', params);
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
66
|
+
};
|
|
67
|
+
} catch (err) {
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: err.message }],
|
|
70
|
+
isError: true,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
server.tool(
|
|
77
|
+
'update_application_status',
|
|
78
|
+
'Change the status of a job application (e.g. applied → interviewing → offer). Validates allowed transitions.',
|
|
79
|
+
{
|
|
80
|
+
id: z.string().describe('Application ID (UUID)'),
|
|
81
|
+
newStatus: z.string().describe('Target status (applied, interviewing, offer, accepted, rejected, withdrawn)'),
|
|
82
|
+
reasonCategory: z.string().optional().describe('Reason category (e.g. "Phone screen scheduled", "Position filled")'),
|
|
83
|
+
comment: z.string().max(5000).optional().describe('Optional comment about the status change'),
|
|
84
|
+
},
|
|
85
|
+
async ({ id, ...body }) => {
|
|
86
|
+
try {
|
|
87
|
+
const { data } = await client.post(`/applications/${encodeURIComponent(id)}/status`, body);
|
|
88
|
+
return {
|
|
89
|
+
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
90
|
+
};
|
|
91
|
+
} catch (err) {
|
|
92
|
+
return {
|
|
93
|
+
content: [{ type: 'text', text: err.message }],
|
|
94
|
+
isError: true,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
);
|
|
49
99
|
}
|
package/.env.example
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Ascend MCP Server Configuration
|
|
2
|
-
# Copy this file to .env and fill in your values
|
|
3
|
-
|
|
4
|
-
# Your Ascend API base URL for MCP endpoints
|
|
5
|
-
# Production: https://ascend.workingensemble.ca/api/mcp
|
|
6
|
-
# Local dev: http://localhost:4000/api/mcp
|
|
7
|
-
ASCEND_API_URL=https://ascend.workingensemble.ca/api/mcp
|
|
8
|
-
|
|
9
|
-
# Your Ascend API key (get from Settings → Claude AI Integration)
|
|
10
|
-
ASCEND_API_KEY=your_64_char_hex_key_here
|