humanpages 1.4.2 → 1.4.3
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/README.md +4 -2
- package/dist/tools.js +24 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Add to your `claude_desktop_config.json`:
|
|
|
24
24
|
"command": "npx",
|
|
25
25
|
"args": ["-y", "humanpages"],
|
|
26
26
|
"env": {
|
|
27
|
-
"API_BASE_URL": "https://
|
|
27
|
+
"API_BASE_URL": "https://humanpages.ai"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -118,6 +118,8 @@ If no humans match, the response suggests using `create_listing` to post a job l
|
|
|
118
118
|
- `lat`, `lng`, `radius` (number, optional): Radius search in km
|
|
119
119
|
- `max_rate` (number, optional): Maximum hourly rate in USD
|
|
120
120
|
- `available_only` (boolean, default: true): Only show available humans
|
|
121
|
+
- `sort_by` (string, optional): Sort results — `completed_jobs` (proven workers first), `rating`, `experience`, or `recent`
|
|
122
|
+
- `min_completed_jobs` (number, optional): Only return humans with at least N completed jobs on the platform
|
|
121
123
|
|
|
122
124
|
### get_human
|
|
123
125
|
Get basic information about a specific human (bio, skills, services). Contact info and wallets are not included — use `get_human_profile`.
|
|
@@ -386,7 +388,7 @@ Once installed, you can ask Claude:
|
|
|
386
388
|
|
|
387
389
|
| Variable | Description | Default |
|
|
388
390
|
|----------|-------------|---------|
|
|
389
|
-
| `API_BASE_URL` | Base URL of the Human Pages API | `https://
|
|
391
|
+
| `API_BASE_URL` | Base URL of the Human Pages API | `https://humanpages.ai` |
|
|
390
392
|
|
|
391
393
|
## Development
|
|
392
394
|
|
package/dist/tools.js
CHANGED
|
@@ -29,6 +29,10 @@ async function searchHumans(params) {
|
|
|
29
29
|
query.set('minExperience', params.min_experience.toString());
|
|
30
30
|
if (params.fiat_platform)
|
|
31
31
|
query.set('fiatPlatform', params.fiat_platform);
|
|
32
|
+
if (params.sort_by)
|
|
33
|
+
query.set('sortBy', params.sort_by);
|
|
34
|
+
if (params.min_completed_jobs)
|
|
35
|
+
query.set('minCompletedJobs', params.min_completed_jobs.toString());
|
|
32
36
|
const res = await fetch(`${API_BASE}/api/humans/search?${query}`);
|
|
33
37
|
if (!res.ok) {
|
|
34
38
|
throw new Error(`API error: ${res.status}`);
|
|
@@ -55,7 +59,7 @@ export function createServer() {
|
|
|
55
59
|
tools: [
|
|
56
60
|
{
|
|
57
61
|
name: 'search_humans',
|
|
58
|
-
description: 'Search for humans available for hire. Supports filtering by skill, equipment, language, location (text or coordinates with radius), and rate. When using text location, provide a fully-qualified name (e.g., "Richmond, Virginia, USA" not just "Richmond") for accurate geocoding. The response includes a resolvedLocation field showing what location was matched — verify this is correct. Default search radius is 30km. Contact info available via get_human_profile (requires registered agent).',
|
|
62
|
+
description: 'Search for humans available for hire. All filters are optional — you can combine any of them or use just one. IMPORTANT: When the user wants workers with platform experience or completed jobs, use min_completed_jobs=1 (no skill filter needed) to find ALL humans with completed jobs across any skill. Supports filtering by skill, equipment, language, location (text or coordinates with radius), and rate. Use sort_by to control result ordering — "completed_jobs" (default) surfaces workers with proven platform experience first, "rating" sorts by reviews, "experience" by years of professional experience. When using text location, provide a fully-qualified name (e.g., "Richmond, Virginia, USA" not just "Richmond") for accurate geocoding. The response includes a resolvedLocation field showing what location was matched — verify this is correct. Default search radius is 30km. Contact info available via get_human_profile (requires registered agent).',
|
|
59
63
|
inputSchema: {
|
|
60
64
|
type: 'object',
|
|
61
65
|
properties: {
|
|
@@ -114,6 +118,15 @@ export function createServer() {
|
|
|
114
118
|
type: 'string',
|
|
115
119
|
description: 'Filter by fiat payment platform the human accepts (e.g., "WISE", "PAYPAL", "VENMO", "REVOLUT", "CASHAPP", "ZELLE", "MONZO", "N26", "MERCADOPAGO")',
|
|
116
120
|
},
|
|
121
|
+
sort_by: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
enum: ['completed_jobs', 'rating', 'experience', 'recent'],
|
|
124
|
+
description: 'Sort results by: "completed_jobs" (humans with platform experience first), "rating" (highest rated first), "experience" (most years of professional experience first), "recent" (most recently active first). Default sorts by completed jobs, then rating, then experience.',
|
|
125
|
+
},
|
|
126
|
+
min_completed_jobs: {
|
|
127
|
+
type: 'number',
|
|
128
|
+
description: 'Only return humans who have completed at least this many jobs on the platform. Use min_completed_jobs=1 to find all workers with any platform track record. Works with or without other filters — no skill filter needed.',
|
|
129
|
+
},
|
|
117
130
|
},
|
|
118
131
|
},
|
|
119
132
|
},
|
|
@@ -931,19 +944,24 @@ export function createServer() {
|
|
|
931
944
|
? `${h.neighborhood}, ${h.location}`
|
|
932
945
|
: h.location || 'Location not specified';
|
|
933
946
|
const displayName = h.name || h.username || 'Name hidden';
|
|
947
|
+
const jobsCompleted = rep?.jobsCompleted || 0;
|
|
948
|
+
const jobsBadge = jobsCompleted > 0 ? ` | 🏆 ${jobsCompleted} job${jobsCompleted !== 1 ? 's' : ''} completed` : '';
|
|
934
949
|
return `- **${displayName}**${h.username && h.name ? ` (@${h.username})` : ''} [${displayLocation}]
|
|
935
|
-
${h.isAvailable ? '✅ Available' : '❌ Busy'} | ${rateDisplay} | ${rating}
|
|
950
|
+
${h.isAvailable ? '✅ Available' : '❌ Busy'} | ${rateDisplay} | ${rating}${jobsBadge}
|
|
936
951
|
${humanityStatus}
|
|
937
952
|
Skills: ${h.skills.join(', ') || 'None listed'}
|
|
938
953
|
Equipment: ${h.equipment.join(', ') || 'None listed'}
|
|
939
954
|
Languages: ${h.languages.join(', ') || 'Not specified'}
|
|
940
955
|
Experience: ${h.yearsOfExperience ? `${h.yearsOfExperience} years` : 'Not specified'}
|
|
941
956
|
Payment methods: ${h.paymentMethods && h.paymentMethods.length > 0 ? h.paymentMethods.join(', ') : 'Not specified'}
|
|
942
|
-
|
|
957
|
+
Notification channels: ${h.channelCount || 0}/4 active`;
|
|
943
958
|
})
|
|
944
959
|
.join('\n\n');
|
|
960
|
+
const totalNote = response.total > humans.length
|
|
961
|
+
? ` (showing ${humans.length} of ${response.total} total matches — use offset/limit or filters to see more)`
|
|
962
|
+
: '';
|
|
945
963
|
return {
|
|
946
|
-
content: [{ type: 'text', text: `Found ${
|
|
964
|
+
content: [{ type: 'text', text: `Found ${response.total} human(s):${totalNote}${locationNote}\n\n${summary}\n\n_Contact info and wallets available via get_human_profile (requires registered agent)._` }],
|
|
947
965
|
};
|
|
948
966
|
}
|
|
949
967
|
if (name === 'get_human') {
|
|
@@ -1228,6 +1246,8 @@ Your agent profile now shows a verified badge. Humans will see this when reviewi
|
|
|
1228
1246
|
streamInterval: args?.stream_interval,
|
|
1229
1247
|
streamRateUsdc: args?.stream_rate_usd,
|
|
1230
1248
|
streamMaxTicks: args?.stream_max_ticks,
|
|
1249
|
+
agentLat: args?.agent_lat,
|
|
1250
|
+
agentLng: args?.agent_lng,
|
|
1231
1251
|
preferredPaymentMethod: args?.preferred_payment_method,
|
|
1232
1252
|
callbackUrl: args?.callback_url,
|
|
1233
1253
|
callbackSecret: args?.callback_secret,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "humanpages",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"mcpName": "io.github.human-pages-ai/humanpages",
|
|
5
5
|
"description": "MCP server (+ OpenClaw SKILL.md) that gives AI agents access to real-world people who listed themselves to be hired by agents. 31 tools including search by skill/location/equipment, job offers, job board listings, in-job messaging, streaming payments, and agent funding.",
|
|
6
6
|
"main": "dist/index.js",
|