{
  "data": {
    "a": {
      "slug": "himalayas-mcp",
      "name": "Himalayas Remote Jobs MCP",
      "vendor": "Himalayas Remote Jobs Pty Ltd",
      "vendorUrl": "https://himalayas.app",
      "kind": "mcp",
      "category": "recruiting",
      "summary": "Himalayas' hosted MCP server connects agents to its remote jobs marketplace, with 13 public tools for job and salary search, 46 for job seekers and 20 for employers posting jobs and messaging candidates.",
      "url": "https://www.anchorterminal.com/tools/himalayas-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/himalayas-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/himalayas-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/himalayas-mcp.json",
      "dns": "himalayas-mcp.grade.anchorterminal.com",
      "repo": "https://github.com/Himalayas-App/himalayas-mcp",
      "license": "Proprietary service. The repository's MIT licence covers its docs and manifest",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.himalayas.app/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Public tools need no account. Account tools use OAuth 2.1 with PKCE (S256), with Client ID Metadata Documents or dynamic registration; you sign in on himalayas.app.",
      "pricing": "freemium",
      "pricingNotes": "Job search and posting are free; jobs are reviewed before going live. Himalayas Plus costs US$9 a month, and paid job extras return a Stripe checkout link (checked 2026-11-07).",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the MCP docs or pricing page (checked 2026-11-07).",
        "endpoints": []
      },
      "toolCount": 79,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-07"
      },
      "docsUrl": "https://himalayas.app/docs/remote-jobs-mcp",
      "llmsTxt": "https://himalayas.app/llms.txt",
      "registryName": "app.himalayas/mcp",
      "capabilities": [
        "jobs.search",
        "recruiting.jobs",
        "recruiting.candidates",
        "recruiting.applications"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "remote-mcp",
        "oauth",
        "freemium",
        "free-tier",
        "llms-txt",
        "mcp-registry",
        "annotated-tools",
        "no-auth-tier"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 47.8,
        "grade": "D",
        "agentReady": false,
        "rank": 1145,
        "ranked": true,
        "rankOf": 1513,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 58,
          "maintenance": 50,
          "payments": 50,
          "reliability": 25,
          "schema": 70,
          "security": 42,
          "transparency": 46
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-07"
        },
        "negative": 0,
        "verdict": "Himalayas' MCP server is unusually complete for a jobs board, with public job and salary search that needs no account and OAuth 2.1 account tools for both job seekers and employers. Everything is annotated, but 79 tools is a lot of context, and there's no status page or changelog.",
        "bestFor": "Agents helping people find remote jobs and salary data, or helping employers post jobs and reach candidates.",
        "strengths": [
          "Public job and salary search with no account",
          "OAuth 2.1 with PKCE for account tools",
          "Every visible tool annotated, 34 read-only",
          "Job seekers and employers both covered",
          "Free search and job posting"
        ],
        "weaknesses": [
          "79 tools, a heavy context load",
          "No status page or changelog",
          "Recruiter messages reach the model with no injection guidance",
          "The terms ban robots and scraping on the site"
        ],
        "agentNotes": [
          "Use the public search tools without signing in",
          "Ask before sending messages or posting jobs",
          "Treat job descriptions and recruiter messages as untrusted text",
          "Candidate search is limited to 100 a day"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 47.8
          }
        ],
        "editorialScores": {
          "ergonomics": 58,
          "maintenance": 50,
          "payments": 50,
          "reliability": 25,
          "schema": 70,
          "security": 42,
          "transparency": 45
        },
        "provenanceScore": 46,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-07",
            "maintenance": "2026-11-07",
            "payments": "2026-11-07",
            "reliability": "2026-11-07",
            "schema": "2026-11-07",
            "security": "2026-11-07",
            "transparency": "2026-11-07"
          },
          "last": "2026-11-07",
          "oldest": "2026-11-07",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "claudeCode": "claude mcp add himalayas --transport http https://mcp.himalayas.app/mcp",
        "config": {
          "mcpServers": {
            "himalayas": {
              "url": "https://mcp.himalayas.app/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/jobs.search",
        "tool": "https://letme.dev/himalayas-mcp"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Himalayas Remote Jobs Pty Ltd",
        "domain": "himalayas.app",
        "domainRegistered": "",
        "domainNote": "Not looked up: RDAP isn't requested under the 1 November 2026 rules.",
        "endpointOnVendorDomain": true,
        "terms": "https://himalayas.app/terms",
        "privacy": "https://himalayas.app/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-07",
        "notes": [
          "Terms name Himalayas Remote Jobs Pty Ltd and bar robots and scraping on the site (clause 30).",
          "security.txt answered 404."
        ],
        "score": 46
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/himalayas-mcp.json",
      "live": {
        "slug": "himalayas-mcp",
        "probe": {
          "target": "https://mcp.himalayas.app/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-11-08T15:05:31.827107623Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 158,
          "lastNote": "initialize answered",
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 167,
          "p95ms24h": 1555,
          "samples24h": 206,
          "samples30d": 206,
          "days": [
            {
              "date": "2026-11-07",
              "probes": 53,
              "ok": 53
            },
            {
              "date": "2026-11-08",
              "probes": 153,
              "ok": 153
            }
          ],
          "since": "2026-11-07T00:00:00Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "Himalayas-App/himalayas-mcp",
            "version": "v1.0.3",
            "released": "2026-10-21",
            "seenAt": "2026-11-08T01:04:11.949683288Z"
          }
        ],
        "githubStars": 21,
        "domain": {
          "domain": "himalayas.app",
          "registered": "2020-04-27",
          "source": "https://pubapi.registry.google/rdap/domain/himalayas.app",
          "checkedAt": "2026-11-08T14:44:07.296620684Z"
        },
        "pages": [
          {
            "url": "https://himalayas.app/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-08T15:02:26.629020302Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "21e6fc08faa5"
          },
          {
            "url": "https://himalayas.app/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-08T15:02:29.284504699Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "baccbee0c312"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.himalayas.app/mcp",
          "checkedAt": "2026-11-08T01:58:55.587715046Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "get_jobs",
              "title": "Browse remote jobs",
              "description": "Browse the latest remote job listings with optional filtering by country or worldwide availability",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country": {
                    "description": "Filter jobs by country (e.g., 'Canada', 'United States', 'UK')",
                    "type": "string"
                  },
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "worldwide": {
                    "description": "Show ONLY 100% remote jobs available worldwide (overrides country filter)",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Browse remote jobs"
              }
            },
            {
              "name": "search_jobs",
              "title": "Search remote jobs",
              "description": "Search remote job listings on Himalayas by job title, role, skill or keyword, filtered by the countries a job is open to, worldwide availability, seniority, employment type, salary, markets, benefits or companies. Each result has the company, title, salary range when listed, the countries the job is open to, the posting date and the slugs for get_job_details.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "benefits": {
                    "description": "Comma-separated benefit slugs to filter by (e.g., '401k,health-insurance,equity')",
                    "type": "string"
                  },
                  "companies": {
                    "description": "Comma-separated company slugs to filter by (e.g., 'stripe,gitlab')",
                    "type": "string"
                  },
                  "country": {
                    "description": "Filter jobs by country (e.g., 'Canada', 'United States', 'UK')",
                    "type": "string"
                  },
                  "currency": {
                    "description": "Salary currency (default: USD). salary_min and salary_max are always USD; this doesn't convert them.",
                    "enum": [
                      "USD",
                      "AUD",
                      "EUR",
                      "JPY",
                      "GBP",
                      "CAD",
                      "CHF",
                      "CNY",
                      "HKD",
                      "NZD",
                      "SGD",
                      "SEK",
                      "KRW",
                      "NOK",
                      "INR",
                      "MXN",
                      "TWD",
                      "ZAR",
                      "BRL",
                      "IDR",
                      "PHP",
                      "THB",
                      "CLP",
                      "CZK",
                      "DKK",
                      "HUF",
                      "ILS",
                      "TRY",
                      "PLN"
                    ],
                    "type": "string"
                  },
                  "exclude_worldwide": {
                    "description": "When true and country is set, return ONLY jobs specifically available in that country, excluding worldwide/remote jobs. Requires country to be set.",
                    "type": "boolean"
                  },
                  "experience": {
                    "description": "Filter by a single experience/seniority level (entry-level, mid-level, senior, manager, director, or executive)",
                    "enum": [
                      "entry-level",
                      "mid-level",
                      "senior",
                      "manager",
                      "director",
                      "executive"
                    ],
                    "type": "string"
                  },
                  "keyword": {
                    "description": "Job title, role or skill to search for, e.g. 'product manager' or 'react' (optional)",
                    "type": "string"
                  },
                  "markets": {
                    "description": "Comma-separated market/category slugs to filter by (e.g., 'saas,fintech,healthcare')",
                    "type": "string"
                  },
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "salary_max": {
                    "description": "Maximum yearly pay in USD, compared the same way as salary_min",
                    "minimum": 0,
                    "type": "number"
                  },
                  "salary_min": {
                    "description": "Minimum yearly pay in USD. Hourly, weekly and monthly pay is converted to a yearly figure first (hourly x 2080), so hourly jobs whose yearly equivalent clears it are included.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "salary_required": {
                    "description": "If false, include jobs without salary data in salary-filtered results (default: true — only jobs with salary)",
                    "type": "boolean"
                  },
                  "sort": {
                    "description": "Sort order for results (default: 'relevant')",
                    "enum": [
                      "relevant",
                      "recent",
                      "salaryAsc",
                      "salaryDesc"
                    ],
                    "type": "string"
                  },
                  "type": {
                    "description": "Filter by a single employment type (full-time, part-time, contractor, temporary, intern, volunteer, or other)",
                    "enum": [
                      "full-time",
                      "part-time",
                      "contractor",
                      "temporary",
                      "intern",
                      "volunteer",
                      "other"
                    ],
                    "type": "string"
                  },
                  "worldwide": {
                    "description": "Show ONLY 100% remote jobs available worldwide (overrides country filter)",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Search remote jobs"
              }
            },
            {
              "name": "get_job_details",
              "title": "Get job details",
              "description": "Get full details for a specific job including description, requirements and salary. Use the company_slug and job_slug from job listings. To get the employer's application link, call get_apply_link.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug (from the job listing URL or company page)",
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug (from the job listing URL)",
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug",
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get job details"
              }
            },
            {
              "name": "get_apply_link",
              "title": "Get apply link",
              "description": "Get the employer's application link for a job, once the user has decided to apply. Uses the connected Himalayas account (no extra sign-in needed); limited to 50 links per account per day. Use the company_slug and job_slug from job listings.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug (from the job listing URL or company page)",
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug (from the job listing URL)",
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug",
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Get apply link"
              }
            },
            {
              "name": "generate_application_documents",
              "title": "Tailor resume and cover letter",
              "description": "Write a resume and cover letter tailored to a Himalayas job, from the user's Himalayas profile. Use it when the user's CV is generic, they have no cover letter, or an application form asks for one. They are saved to the user's account, where the user can edit them and download a PDF. A free account gets one tailored resume and one cover letter in total; Himalayas Plus includes them for every job. Uses the connected Himalayas account; no extra sign-in needed. Use the company_slug and job_slug from job listings.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug (from the job listing URL or company page)",
                    "type": "string"
                  },
                  "documents": {
                    "description": "Which documents to write (default: both)",
                    "items": {
                      "enum": [
                        "resume",
                        "cover_letter"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "job_slug": {
                    "description": "Job slug (from the job listing URL)",
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug",
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Tailor resume and cover letter"
              }
            },
            {
              "name": "get_new_matches",
              "title": "Get new job matches",
              "description": "Get jobs matching the user's Himalayas profile that were posted since an agent last checked, leaving out jobs already in their tracker. The check-in point is saved on the account, so it carries across sessions and agents; a first check looks back 7 days. Plus members get the jobs; free accounts get how many there are. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Get new job matches"
              }
            },
            {
              "name": "skip_job",
              "title": "Skip job",
              "description": "Record that the user is passing on a Himalayas job, with the reason, so it stops coming back in get_new_matches and future matches can learn from it. job_closed also reports the listing as expired. For a job already in the tracker, use update_job_status with outcome didnt_apply instead. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug (from the job listing URL)",
                    "type": "string"
                  },
                  "detail": {
                    "description": "Anything worth knowing, in a sentence or two (what the page said, a hidden requirement). No personal data.",
                    "maxLength": 500,
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug (from the job listing URL)",
                    "type": "string"
                  },
                  "reason": {
                    "description": "Why the user is passing on it",
                    "enum": [
                      "job_closed",
                      "needs_account",
                      "location_or_visa_restricted",
                      "pay_too_low",
                      "wrong_timezone",
                      "not_really_remote",
                      "wrong_seniority",
                      "wrong_role",
                      "not_interested",
                      "other"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug",
                  "job_slug",
                  "reason"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Skip job"
              }
            },
            {
              "name": "get_plus_checkout_link",
              "title": "Get Himalayas Plus checkout link",
              "description": "Get a Stripe checkout link for Himalayas Plus (US$9 a month) when the user wants to subscribe. Plus includes tailored resumes and cover letters for every job; 30 minutes a month of spoken mock interviews for a specific job, scored out of 100 (sessions of 90 seconds or more) and saved so the user can track their progress; new job matches between sessions (get_new_matches); a higher place in employer talent search on the himalayas.app website (not in search_talent results through this connector, which have no paid placement); identity and work permit verification every 30 days, with a verified badge (work permits need a passport or national ID); and a career coach. Details: https://himalayas.app/plus. The user opens the link and pays on Stripe themselves; this tool never charges them. Applying through Himalayas is free without Plus. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "billing_interval": {
                    "description": "Bill monthly or yearly (default: month)",
                    "enum": [
                      "month",
                      "year"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Get Himalayas Plus checkout link"
              }
            },
            {
              "name": "join_radar_waitlist",
              "title": "Join Radar waitlist",
              "description": "Join the waitlist for Himalayas Radar, a plan for people who are employed or not actively searching: alerts only for roles that beat their bar, a private open-to-offers mode with their current employer hidden, and a monthly salary check. Radar isn't available yet, so there is nothing to pay; Himalayas emails the user when it launches. Call it only if the user wants to join. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Join Radar waitlist"
              }
            },
            {
              "name": "get_related_jobs",
              "title": "Get related jobs",
              "description": "Find jobs similar to a specific job, based on skills, location, and category. Use after viewing a job to suggest alternatives.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug of the original job",
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug of the original job",
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug",
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get related jobs"
              }
            },
            {
              "name": "get_companies",
              "title": "Browse remote companies",
              "description": "Browse remote-friendly companies with optional filtering by country or worldwide availability",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country": {
                    "description": "Filter companies by country (e.g., 'Canada', 'United States', 'UK')",
                    "type": "string"
                  },
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "worldwide": {
                    "description": "Show only companies with 100% remote jobs available worldwide (overrides country filter)",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Browse remote companies"
              }
            },
            {
              "name": "search_companies",
              "title": "Search remote companies",
              "description": "Search for remote-friendly companies using keywords with optional country filtering",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "benefits": {
                    "description": "Comma-separated benefit slugs to filter by (e.g., '401k,health-insurance,equity')",
                    "type": "string"
                  },
                  "country": {
                    "description": "Filter companies by country (e.g., 'Canada', 'United States', 'UK')",
                    "type": "string"
                  },
                  "keyword": {
                    "description": "Search keyword/term (optional)",
                    "type": "string"
                  },
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "sort": {
                    "description": "Sort order for results (default: 'relevant')",
                    "enum": [
                      "relevant",
                      "recent",
                      "jobs",
                      "nameAToZ",
                      "nameZToA"
                    ],
                    "type": "string"
                  },
                  "tech_stack": {
                    "description": "Comma-separated technology slugs to filter by (e.g., 'react,typescript,python')",
                    "type": "string"
                  },
                  "worldwide": {
                    "description": "Show only companies with 100% remote jobs available worldwide (overrides country filter)",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Search remote companies"
              }
            },
            {
              "name": "get_company_details",
              "title": "Get company details",
              "description": "Get full details for a company including about, tech stack, benefits, open positions, and social links",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug (e.g., 'stripe', 'gitlab')",
                    "type": "string"
                  }
                },
                "required": [
                  "company_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get company details"
              }
            },
            {
              "name": "get_remote_work_statistics",
              "title": "Get remote work statistics",
              "description": "Get remote work statistics: top skills, job categories, industries, or countries by job/company count.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country": {
                    "description": "Filter stats by country (e.g., 'United States', 'Germany')",
                    "type": "string"
                  },
                  "record": {
                    "description": "What to get stats for: 'jobs' or 'companies' (default: jobs)",
                    "enum": [
                      "jobs",
                      "companies"
                    ],
                    "type": "string"
                  },
                  "type": {
                    "description": "Type of breakdown: 'skills', 'categories', 'countries', or 'industries' (default: skills). 'industries' only works with record='companies'.",
                    "enum": [
                      "skills",
                      "categories",
                      "countries",
                      "industries"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get remote work statistics"
              }
            },
            {
              "name": "get_salary_data",
              "title": "Get salary data",
              "description": "Get salary benchmarks for remote jobs by job title, with optional seniority and country filters. Returns min, max, and median salary in USD.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country": {
                    "description": "Country slug to filter by (e.g., 'united-states', 'united-kingdom', 'germany')",
                    "type": "string"
                  },
                  "job_title": {
                    "description": "Job title to look up salary for (e.g., 'software-engineer', 'product-manager', 'data-scientist'). Use hyphens instead of spaces.",
                    "type": "string"
                  },
                  "seniority": {
                    "description": "Seniority level (e.g., 'senior', 'junior', 'lead', 'mid')",
                    "type": "string"
                  }
                },
                "required": [
                  "job_title"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get salary data"
              }
            },
            {
              "name": "get_correct_country_name",
              "title": "Resolve country name",
              "description": "Resolve a country name to the correct format accepted by Himalayas filters. Useful for fuzzy matching user input.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country_string": {
                    "description": "The country name to get the correct name for",
                    "type": "string"
                  }
                },
                "required": [
                  "country_string"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Resolve country name"
              }
            },
            {
              "name": "submit_feedback",
              "title": "Send feedback to Himalayas",
              "description": "Send a problem report about Himalayas to its engineering team: a missing capability (filter, field, tool), unclear or wrong documentation, a surprising response, an unhelpful error, a bug, a blocked page or action, or impractical performance. Describe the goal, what got in the way and, if known, a suggested fix. Fill `agent` with the client's name and model. Reports must not contain credentials, personal data or the user's private content.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "agent": {
                    "additionalProperties": false,
                    "description": "Who is reporting: name (agent or product) and model",
                    "properties": {
                      "framework": {
                        "maxLength": 256,
                        "type": "string"
                      },
                      "model": {
                        "maxLength": 256,
                        "type": "string"
                      },
                      "name": {
                        "maxLength": 256,
                        "type": "string"
                      },
                      "version": {
                        "maxLength": 256,
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "endpoint": {
                    "description": "The Himalayas tool involved, e.g. search_jobs",
                    "maxLength": 512,
                    "type": "string"
                  },
                  "evidence": {
                    "additionalProperties": false,
                    "description": "Sanitized details of the failing call, with no credentials or personal data",
                    "properties": {
                      "request": {
                        "additionalProperties": {},
                        "propertyNames": {
                          "type": "string"
                        },
                        "type": "object"
                      },
                      "response_excerpt": {
                        "maxLength": 4000,
                        "type": "string"
                      },
                      "status_code": {
                        "maximum": 9007199254740991,
                        "minimum": -9007199254740991,
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "expected": {
                    "description": "What you expected to find or happen",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "goal": {
                    "description": "What you or your user were trying to accomplish, in plain language",
                    "maxLength": 1000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "message": {
                    "description": "What prevented or complicated the task",
                    "maxLength": 4000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "metadata": {
                    "additionalProperties": {},
                    "propertyNames": {
                      "type": "string"
                    },
                    "type": "object"
                  },
                  "outcome": {
                    "description": "blocked = task failed, degraded = completed worse or slower, completed = suggestion only",
                    "enum": [
                      "blocked",
                      "degraded",
                      "completed"
                    ],
                    "type": "string"
                  },
                  "request_id": {
                    "maxLength": 256,
                    "type": "string"
                  },
                  "session_id": {
                    "description": "Reuse the same value for every report in one task",
                    "maxLength": 256,
                    "type": "string"
                  },
                  "suggestion": {
                    "description": "A concrete change that would have let you succeed",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "type": {
                    "description": "The kind of problem",
                    "enum": [
                      "missing_capability",
                      "bug",
                      "unclear_documentation",
                      "unexpected_response",
                      "unhelpful_error",
                      "performance",
                      "other"
                    ],
                    "type": "string"
                  },
                  "workaround": {
                    "description": "Whether you found a workaround",
                    "type": "boolean"
                  },
                  "workaround_description": {
                    "description": "The workaround, if any",
                    "maxLength": 2000,
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "goal",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Send feedback to Himalayas"
              }
            },
            {
              "name": "get_my_profile",
              "title": "Get my profile",
              "description": "Get your Himalayas profile information. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get my profile"
              }
            },
            {
              "name": "save_job",
              "title": "Save job to tracker",
              "description": "Save a job to your application tracker. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "app_link": {
                    "description": "Application link URL",
                    "type": "string"
                  },
                  "base_salary": {
                    "description": "Base salary",
                    "type": "number"
                  },
                  "company_name": {
                    "description": "Company name",
                    "type": "string"
                  },
                  "currency": {
                    "description": "Salary currency (e.g., 'USD')",
                    "type": "string"
                  },
                  "excitement": {
                    "description": "Excitement level from 0-5",
                    "maximum": 5,
                    "minimum": 0,
                    "type": "number"
                  },
                  "himalayas_link": {
                    "description": "Himalayas job listing URL",
                    "type": "string"
                  },
                  "max_salary": {
                    "description": "Maximum salary",
                    "type": "number"
                  },
                  "notes": {
                    "description": "Personal notes about this job",
                    "type": "string"
                  },
                  "status": {
                    "description": "Application status (default: saved)",
                    "enum": [
                      "seen",
                      "saved",
                      "applied",
                      "interviewing",
                      "negotiation",
                      "hired",
                      "archived"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Job title",
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "company_name"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Save job to tracker"
              }
            },
            {
              "name": "get_saved_jobs",
              "title": "Get saved jobs",
              "description": "List every job in the user's Himalayas job application tracker with its status (saved, applied, interviewing, negotiation, hired, archived), outcome, salary, notes and links, for tracking applications and seeing where each one stands. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get saved jobs"
              }
            },
            {
              "name": "update_job_status",
              "title": "Update job status",
              "description": "Update a saved job's status, outcome or details. Use status for where the application is now (interviewing, negotiation for an offer, hired). Use outcome for an applied job that ended without progressing: rejected, no_response (no reply after 45+ days), withdrawn, or didnt_apply; status stays as it is. With didnt_apply, give a reason: job_closed reports the listing as expired, and the rest improve the user's future matches. Add detail for anything worth knowing (what the page said, a hidden requirement). Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "detail": {
                    "description": "Anything worth knowing about the outcome, in a sentence or two. No personal data.",
                    "maxLength": 500,
                    "type": "string"
                  },
                  "excitement": {
                    "description": "Excitement level from 0-5",
                    "maximum": 5,
                    "minimum": 0,
                    "type": "number"
                  },
                  "id": {
                    "description": "Kanban item ID",
                    "type": "number"
                  },
                  "notes": {
                    "description": "Updated notes",
                    "type": "string"
                  },
                  "outcome": {
                    "description": "What happened after applying, as reported by the user. \"clear\" removes a recorded outcome.",
                    "enum": [
                      "rejected",
                      "no_response",
                      "withdrawn",
                      "didnt_apply",
                      "clear"
                    ],
                    "type": "string"
                  },
                  "reason": {
                    "description": "Why the user didn't apply (only with outcome didnt_apply)",
                    "enum": [
                      "job_closed",
                      "needs_account",
                      "location_or_visa_restricted",
                      "pay_too_low",
                      "wrong_timezone",
                      "not_really_remote",
                      "wrong_seniority",
                      "wrong_role",
                      "not_interested",
                      "other"
                    ],
                    "type": "string"
                  },
                  "status": {
                    "description": "New application status",
                    "enum": [
                      "seen",
                      "saved",
                      "applied",
                      "interviewing",
                      "negotiation",
                      "hired",
                      "archived"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update job status"
              }
            },
            {
              "name": "remove_saved_job",
              "title": "Remove saved job",
              "description": "Remove a job from your application tracker. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "description": "Kanban item ID to remove",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Remove saved job"
              }
            },
            {
              "name": "update_profile",
              "title": "Update profile",
              "description": "Update your Himalayas profile. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "behance": {
                    "description": "Behance profile URL",
                    "type": "string"
                  },
                  "bio": {
                    "description": "Short bio",
                    "type": "string"
                  },
                  "career_base_salary": {
                    "description": "Desired minimum salary",
                    "type": "number"
                  },
                  "career_company_size": {
                    "additionalProperties": {
                      "enum": [
                        "not_interested",
                        "okay",
                        "preferred"
                      ],
                      "type": "string"
                    },
                    "description": "Company size preferences, e.g. {'1-10': 'not_interested', '51-200': 'preferred'}. Replaces all current size preferences, so include every size the user cares about.",
                    "propertyNames": {
                      "enum": [
                        "1-10",
                        "11-50",
                        "51-200",
                        "201-500",
                        "501-1000",
                        "1001-5000",
                        "5000+"
                      ],
                      "type": "string"
                    },
                    "required": [
                      "1-10",
                      "11-50",
                      "51-200",
                      "201-500",
                      "501-1000",
                      "1001-5000",
                      "5000+"
                    ],
                    "type": "object"
                  },
                  "career_compensation": {
                    "description": "How the user feels about equity as part of pay",
                    "enum": [
                      "no_equity",
                      "open_to_compensation",
                      "equity_important"
                    ],
                    "type": "string"
                  },
                  "career_description": {
                    "description": "Description of what you're looking for",
                    "type": "string"
                  },
                  "career_interested_role_list": {
                    "description": "Other roles the user is interested in. Replaces the current list.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "career_max_salary": {
                    "description": "Desired maximum salary",
                    "type": "number"
                  },
                  "career_primary_role": {
                    "description": "Primary role (e.g., 'software-engineer')",
                    "type": "string"
                  },
                  "career_salary_country": {
                    "description": "Currency of the desired salary",
                    "enum": [
                      "USD",
                      "AUD",
                      "EUR",
                      "JPY",
                      "GBP",
                      "CAD",
                      "CHF",
                      "CNY",
                      "HKD",
                      "NZD",
                      "SGD",
                      "SEK",
                      "KRW",
                      "NOK",
                      "INR",
                      "MXN",
                      "TWD",
                      "ZAR",
                      "BRL",
                      "IDR",
                      "PHP",
                      "THB",
                      "CLP",
                      "CZK",
                      "DKK",
                      "HUF",
                      "ILS",
                      "TRY",
                      "PLN"
                    ],
                    "type": "string"
                  },
                  "career_search_status": {
                    "description": "Career search status (e.g., 'actively_searching', 'open_to_roles', 'closed_to_roles')",
                    "enum": [
                      "actively_searching",
                      "open_to_roles",
                      "closed_to_roles"
                    ],
                    "type": "string"
                  },
                  "career_skill_list": {
                    "description": "Skills for job matching (e.g. ['Product design', 'User research']). Replaces the current list.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "career_working_permits": {
                    "description": "Countries the user can legally work in, as country names (e.g. ['United States']). Replaces the current list.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "contact_email": {
                    "description": "Email shown to employers, if different from the login email",
                    "type": "string"
                  },
                  "dribbble": {
                    "description": "Dribbble profile URL",
                    "type": "string"
                  },
                  "email_visible": {
                    "description": "Show the contact email on the profile",
                    "type": "boolean"
                  },
                  "first_name": {
                    "description": "First name, as shown on the profile and tailored resumes",
                    "type": "string"
                  },
                  "github": {
                    "description": "GitHub profile URL",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Introduction/headline",
                    "type": "string"
                  },
                  "last_name": {
                    "description": "Last name",
                    "type": "string"
                  },
                  "linkedin": {
                    "description": "LinkedIn profile URL",
                    "type": "string"
                  },
                  "location": {
                    "description": "Country name (e.g. 'United States', 'Australia'). Cities and 'City, Country' strings are not accepted.",
                    "type": "string"
                  },
                  "portfolio": {
                    "description": "Portfolio URL",
                    "type": "string"
                  },
                  "seniority": {
                    "description": "Seniority levels the user wants. Replaces the current list.",
                    "items": {
                      "enum": [
                        "Entry-level",
                        "Mid-level",
                        "Senior",
                        "Manager",
                        "Director",
                        "Executive"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "twitter": {
                    "description": "Twitter/X profile URL",
                    "type": "string"
                  },
                  "username": {
                    "description": "New username: 3 to 30 letters, numbers, dashes or underscores. The profile moves to himalayas.app/@username and the old link stops working.",
                    "type": "string"
                  },
                  "visibility": {
                    "description": "public_profile: employers can find and view it. unsearchable_profile: viewable by link but not in search. private_profile: only the user sees it.",
                    "enum": [
                      "public_profile",
                      "unsearchable_profile",
                      "private_profile"
                    ],
                    "type": "string"
                  },
                  "website": {
                    "description": "Personal website URL",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update profile"
              }
            },
            {
              "name": "add_experience",
              "title": "Add work experience",
              "description": "Add a work experience to your Himalayas profile. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_name": {
                    "description": "Company name",
                    "type": "string"
                  },
                  "current_job": {
                    "description": "Whether this is your current job",
                    "type": "boolean"
                  },
                  "description": {
                    "description": "Description of your role and responsibilities",
                    "type": "string"
                  },
                  "employment_type": {
                    "description": "Employment type",
                    "enum": [
                      "Full Time",
                      "Part Time",
                      "Self Employed",
                      "Freelance",
                      "Contractor",
                      "Temporary",
                      "Intern",
                      "Apprenticeship",
                      "Volunteer",
                      "Other"
                    ],
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date (YYYY-MM-DD format, omit for current role)",
                    "type": "string"
                  },
                  "experience_skill_list": {
                    "description": "Comma-separated skills used in this role",
                    "type": "string"
                  },
                  "location": {
                    "description": "Country name for this role (e.g. 'United States', 'Germany'). Cities are not accepted.",
                    "type": "string"
                  },
                  "start_date": {
                    "description": "Start date (YYYY-MM-DD format)",
                    "type": "string"
                  },
                  "title": {
                    "description": "Job title",
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "company_name",
                  "employment_type",
                  "description"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Add work experience"
              }
            },
            {
              "name": "add_education",
              "title": "Add education",
              "description": "Add an education entry to your Himalayas profile. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "activities": {
                    "description": "Activities and societies",
                    "type": "string"
                  },
                  "current": {
                    "description": "Whether you are currently enrolled",
                    "type": "boolean"
                  },
                  "degree": {
                    "description": "Degree (e.g., 'Bachelor of Science')",
                    "type": "string"
                  },
                  "description": {
                    "description": "Description or achievements",
                    "type": "string"
                  },
                  "end_year": {
                    "description": "End year (omit if currently enrolled)",
                    "type": "number"
                  },
                  "field": {
                    "description": "Field of study (e.g., 'Computer Science')",
                    "type": "string"
                  },
                  "grade": {
                    "description": "Grade or GPA",
                    "type": "string"
                  },
                  "school": {
                    "description": "School or institution name",
                    "type": "string"
                  },
                  "start_year": {
                    "description": "Start year",
                    "type": "number"
                  }
                },
                "required": [
                  "school"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Add education"
              }
            },
            {
              "name": "update_experience",
              "title": "Update work experience",
              "description": "Edit a work experience on your Himalayas profile by id (get_my_profile lists the ids). Only the fields you pass change. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_name": {
                    "description": "Company name",
                    "type": "string"
                  },
                  "current_job": {
                    "description": "Whether this is the current job",
                    "type": "boolean"
                  },
                  "description": {
                    "description": "Description of the role",
                    "type": "string"
                  },
                  "employment_type": {
                    "enum": [
                      "Full Time",
                      "Part Time",
                      "Self Employed",
                      "Freelance",
                      "Contractor",
                      "Temporary",
                      "Intern",
                      "Apprenticeship",
                      "Volunteer",
                      "Other"
                    ],
                    "type": "string"
                  },
                  "end_date": {
                    "description": "End date (YYYY-MM-DD)",
                    "type": "string"
                  },
                  "experience_skill_list": {
                    "description": "Skills used in this role. Replaces the current list.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "id": {
                    "description": "Experience id",
                    "type": "number"
                  },
                  "location": {
                    "description": "Country name for this role. Cities are not accepted.",
                    "type": "string"
                  },
                  "sort_order": {
                    "description": "Position on the profile, 0 first",
                    "type": "number"
                  },
                  "start_date": {
                    "description": "Start date (YYYY-MM-DD)",
                    "type": "string"
                  },
                  "title": {
                    "description": "Job title",
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update work experience"
              }
            },
            {
              "name": "delete_experience",
              "title": "Delete work experience",
              "description": "Delete a work experience from your Himalayas profile by id. This can't be undone: confirm with the user first. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "description": "Experience id, from get_my_profile",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete work experience"
              }
            },
            {
              "name": "update_education",
              "title": "Update education",
              "description": "Edit an education entry on your Himalayas profile by id (get_my_profile lists the ids). Only the fields you pass change. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "activities": {
                    "type": "string"
                  },
                  "current": {
                    "description": "Currently enrolled",
                    "type": "boolean"
                  },
                  "degree": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "end_year": {
                    "type": "number"
                  },
                  "field": {
                    "description": "Field of study",
                    "type": "string"
                  },
                  "grade": {
                    "type": "string"
                  },
                  "id": {
                    "description": "Education id",
                    "type": "number"
                  },
                  "school": {
                    "type": "string"
                  },
                  "sort_order": {
                    "description": "Position on the profile, 0 first",
                    "type": "number"
                  },
                  "start_year": {
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update education"
              }
            },
            {
              "name": "delete_education",
              "title": "Delete education",
              "description": "Delete an education entry from your Himalayas profile by id. This can't be undone: confirm with the user first. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "description": "Education id, from get_my_profile",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete education"
              }
            },
            {
              "name": "update_email_preferences",
              "title": "Update email preferences",
              "description": "Turn Himalayas emails on or off for the user. Only the settings you pass change. Daily job-match emails are a Plus feature; free accounts get weekly. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "application_followups": {
                    "description": "'Did you hear back?' emails about applications",
                    "type": "boolean"
                  },
                  "job_match_frequency": {
                    "description": "How often job-match emails come (daily needs Plus)",
                    "enum": [
                      "daily",
                      "weekly"
                    ],
                    "type": "string"
                  },
                  "job_matches": {
                    "description": "Emails with new jobs that match the profile",
                    "type": "boolean"
                  },
                  "job_post_reminders": {
                    "description": "Reminders about jobs they posted (employers)",
                    "type": "boolean"
                  },
                  "job_post_updates": {
                    "description": "Updates about jobs they posted (employers)",
                    "type": "boolean"
                  },
                  "job_reminders": {
                    "description": "Reminders about saved jobs",
                    "type": "boolean"
                  },
                  "marketing_emails": {
                    "description": "Himalayas news and offers",
                    "type": "boolean"
                  },
                  "message_notifications": {
                    "description": "Emails when an employer messages them",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update email preferences"
              }
            },
            {
              "name": "update_account",
              "title": "Update account time zone",
              "description": "Change the user's account time zone (used for email timing). Name is on update_profile; email address and password can only be changed on himalayas.app. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "time_zone": {
                    "description": "Time zone name, e.g. 'Pacific Time (US \u0026 Canada)' or 'London'",
                    "type": "string"
                  }
                },
                "required": [
                  "time_zone"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update account time zone"
              }
            },
            {
              "name": "list_documents",
              "title": "List resumes and cover letters",
              "description": "List the user's tailored resumes and cover letters on Himalayas, newest first, with ids and edit links. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "type": {
                    "description": "Only resumes or only cover letters (default: both)",
                    "enum": [
                      "resume",
                      "cover_letter"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List resumes and cover letters"
              }
            },
            {
              "name": "get_document",
              "title": "Get resume or cover letter",
              "description": "Read one of the user's tailored resumes or cover letters by id (from list_documents). Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Document id or slug"
                  },
                  "type": {
                    "enum": [
                      "resume",
                      "cover_letter"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get resume or cover letter"
              }
            },
            {
              "name": "update_document",
              "title": "Update resume or cover letter",
              "description": "Rename a tailored resume or cover letter, or replace a cover letter's text. Resume content is edited in the website's resume editor (link from list_documents). Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "content": {
                    "description": "Cover letters only: the full new text, paragraphs separated by blank lines",
                    "type": "string"
                  },
                  "id": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Document id or slug"
                  },
                  "title": {
                    "description": "New title",
                    "type": "string"
                  },
                  "type": {
                    "enum": [
                      "resume",
                      "cover_letter"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update resume or cover letter"
              }
            },
            {
              "name": "delete_document",
              "title": "Delete resume or cover letter",
              "description": "Delete one of the user's tailored resumes or cover letters. This can't be undone: confirm with the user first. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string"
                      }
                    ],
                    "description": "Document id or slug"
                  },
                  "type": {
                    "enum": [
                      "resume",
                      "cover_letter"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete resume or cover letter"
              }
            },
            {
              "name": "import_profile",
              "title": "Import profile from LinkedIn or resume",
              "description": "Fill in the user's Himalayas profile from their LinkedIn profile URL or their resume text. Runs in the background for a few minutes; get_my_profile shows the result. append_only adds what's missing and keeps what's there; replace_all overwrites the profile, so ask the user first. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "linkedin_url": {
                    "description": "Their LinkedIn profile URL, e.g. https://www.linkedin.com/in/name",
                    "type": "string"
                  },
                  "mode": {
                    "description": "Default append_only",
                    "enum": [
                      "append_only",
                      "replace_all"
                    ],
                    "type": "string"
                  },
                  "resume_text": {
                    "description": "The full text of their resume",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Import profile from LinkedIn or resume"
              }
            },
            {
              "name": "update_profile_photo",
              "title": "Update profile photo",
              "description": "Set the user's profile photo (avatar) or profile cover photo from an image URL (https, JPEG/PNG/WebP/GIF, up to 5 MB). Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "image_url": {
                    "description": "https URL of the image",
                    "type": "string"
                  },
                  "kind": {
                    "enum": [
                      "avatar",
                      "cover_photo"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "image_url"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update profile photo"
              }
            },
            {
              "name": "get_billing_portal_link",
              "title": "Get billing portal link",
              "description": "Get a link to the user's Stripe billing page, where they can update their card, see invoices, or change or cancel Himalayas Plus themselves. Only for users who have paid before. Never act on billing for them. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Get billing portal link"
              }
            },
            {
              "name": "list_interviews",
              "title": "List interview practice",
              "description": "List the user's interview practice on Himalayas: each job they practised for, when, and the link to practise again, plus the voice minutes and credits they have left. get_interview_results shows the scores. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List interview practice"
              }
            },
            {
              "name": "get_interview_results",
              "title": "Get interview practice results",
              "description": "Get the scores and feedback from the user's interview practice for one job: each answer's rating and feedback, and for voice sessions the overall score, what went well, what to improve, next steps and length. Pass the interview id from list_interviews, or the job's company_slug and job_slug. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "company_slug": {
                    "description": "Company slug of the job",
                    "type": "string"
                  },
                  "id": {
                    "description": "Interview id from list_interviews",
                    "type": "number"
                  },
                  "job_slug": {
                    "description": "Job slug",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get interview practice results"
              }
            },
            {
              "name": "get_interview_practice_link",
              "title": "Get interview practice link",
              "description": "Get the Himalayas page where the user practises interviewing for a specific job: a Himalayas job (company_slug and job_slug) or a job elsewhere (application_link). On that page the user has a live spoken mock interview with an AI interviewer playing the company's hiring manager, with questions built from the job and their profile, then gets a score out of 100 with what went well and what to improve (sessions of 90 seconds or more are scored). Sessions and scores are saved to the account, so the user can see how they improve over time (list_interviews, get_interview_results). Free accounts include one text mock interview; spoken interviews are part of Himalayas Plus (30 minutes a month). Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "application_link": {
                    "description": "https link to a job posted somewhere else",
                    "type": "string"
                  },
                  "company_slug": {
                    "description": "Company slug of a Himalayas job",
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug of a Himalayas job",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get interview practice link"
              }
            },
            {
              "name": "get_verification_link",
              "title": "Get ID verification link",
              "description": "Get the next step for verifying the user's identity and work permits on Himalayas (the verified badge): whether they are verified, and otherwise the Stripe Identity link (when verification is included, as on Plus or Max) or a US$5 checkout link. Use it when the user wants to get verified: when verification is included, this starts it (a Plus or Max member's included verification is then used for 30 days). A passport or national ID verifies identity and the work permit for that country; other IDs verify identity only. get_my_profile shows whether they are verified. The user opens each link and does the verification or payment on Stripe themselves. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Get ID verification link"
              }
            },
            {
              "name": "list_saved_answers",
              "title": "List saved application answers",
              "description": "List the answers the user saved to job application questions on Himalayas (for example work authorisation or notice period), with ids. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List saved application answers"
              }
            },
            {
              "name": "update_saved_answer",
              "title": "Update saved application answer",
              "description": "Change the text of one of the user's saved application answers, by id from list_saved_answers. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "answer": {
                    "description": "The full new answer",
                    "type": "string"
                  },
                  "id": {
                    "description": "Saved answer id from list_saved_answers",
                    "type": "number"
                  }
                },
                "required": [
                  "id",
                  "answer"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update saved application answer"
              }
            },
            {
              "name": "delete_saved_answer",
              "title": "Delete saved application answer",
              "description": "Delete one of the user's saved application answers. This can't be undone: confirm with the user first. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "description": "Saved answer id from list_saved_answers",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete saved application answer"
              }
            },
            {
              "name": "list_notifications",
              "title": "List notifications",
              "description": "List the user's newest Himalayas notifications (up to 20), such as finished headshots, profile imports and community replies, with ids and whether each is read. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List notifications"
              }
            },
            {
              "name": "mark_notifications_read",
              "title": "Mark notifications read",
              "description": "Mark one of the user's Himalayas notifications as read by id, or all of them with all: true. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "all": {
                    "description": "true marks every notification as read",
                    "type": "boolean"
                  },
                  "id": {
                    "description": "Notification id from list_notifications",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Mark notifications read"
              }
            },
            {
              "name": "list_coach_chats",
              "title": "List career coach chats",
              "description": "List the user's conversations with the Himalayas career coach, newest first, with titles, dates and links. get_coach_chat reads one. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List career coach chats"
              }
            },
            {
              "name": "get_coach_chat",
              "title": "Get career coach chat",
              "description": "Read one of the user's career coach conversations by slug from list_coach_chats. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "slug": {
                    "description": "Chat slug from list_coach_chats",
                    "type": "string"
                  }
                },
                "required": [
                  "slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get career coach chat"
              }
            },
            {
              "name": "list_headshots",
              "title": "List headshots",
              "description": "List the AI headshots the user has made on Himalayas, newest first: each session's finished images with ids and URLs, and a link to see them. use_headshot_as_profile_photo sets one as the profile photo. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List headshots"
              }
            },
            {
              "name": "use_headshot_as_profile_photo",
              "title": "Use headshot as profile photo",
              "description": "Set one of the user's finished AI headshots as their Himalayas profile photo, by session id and image id from list_headshots. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "image_id": {
                    "description": "Image id from list_headshots",
                    "type": "number"
                  },
                  "session_id": {
                    "description": "Session id from list_headshots",
                    "type": "number"
                  }
                },
                "required": [
                  "session_id",
                  "image_id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Use headshot as profile photo"
              }
            },
            {
              "name": "get_headshots_link",
              "title": "Get headshots link",
              "description": "Get the Himalayas page where the user makes AI headshots from a few photos of themselves. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get headshots link"
              }
            },
            {
              "name": "update_tech_stack",
              "title": "Update profile tech stack",
              "description": "Set the tools and technologies on your Himalayas profile, replacing the current list. Names are matched to Himalayas' catalogue; any it doesn't have yet are requested for review and left off for now. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "stacks": {
                    "description": "Array of technology names (e.g., ['React', 'TypeScript', 'Node.js'])",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "stacks"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update profile tech stack"
              }
            },
            {
              "name": "search_talent",
              "title": "Search talent",
              "description": "Search remote candidates and talent on Himalayas to hire or recruit, such as developers, designers or marketers, by skill, job title or keyword and country. Each result has the candidate's current role, salary expectation, job search status and the profile link for get_talent_profile. Results here have no paid placement: they are ordered by relevance or recency only, and Himalayas Plus or verified candidates rank like everyone else. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "country": {
                    "description": "Filter by country (e.g., 'United States', 'Germany')",
                    "type": "string"
                  },
                  "keyword": {
                    "description": "Search keyword (e.g., 'react developer')",
                    "type": "string"
                  },
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "sort": {
                    "description": "Sort order (default: relevant)",
                    "enum": [
                      "relevant",
                      "recent"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Search talent"
              }
            },
            {
              "name": "get_talent_profile",
              "title": "Get talent profile",
              "description": "Get full details for a candidate including bio, all experiences, education, tech stack, social links, and more. Use the talent_slug from search_talent results. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "talent_slug": {
                    "description": "Talent slug from search_talent (e.g. 'john-doe'). Also accepts '@john-doe' or a himalayas.app/@slug profile URL.",
                    "type": "string"
                  }
                },
                "required": [
                  "talent_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get talent profile"
              }
            },
            {
              "name": "get_company_profile",
              "title": "Get company profile",
              "description": "Get your company's profile on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get company profile"
              }
            },
            {
              "name": "update_company_profile",
              "title": "Update company profile",
              "description": "Update your company's profile on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "about": {
                    "description": "Company description (HTML or plain text)",
                    "type": "string"
                  },
                  "ceo": {
                    "description": "CEO name",
                    "type": "string"
                  },
                  "facebook": {
                    "description": "Facebook URL",
                    "type": "string"
                  },
                  "instagram": {
                    "description": "Instagram URL",
                    "type": "string"
                  },
                  "linkedin": {
                    "description": "LinkedIn URL",
                    "type": "string"
                  },
                  "location_list": {
                    "description": "Comma-separated list of locations (e.g., 'San Francisco, New York')",
                    "type": "string"
                  },
                  "num_employees_range": {
                    "description": "Number of employees range",
                    "enum": [
                      "1-10",
                      "11-50",
                      "51-200",
                      "201-500",
                      "501-1000",
                      "1001-5000",
                      "5000+"
                    ],
                    "type": "string"
                  },
                  "summary": {
                    "description": "Short company summary",
                    "type": "string"
                  },
                  "twitter": {
                    "description": "Twitter URL",
                    "type": "string"
                  },
                  "year_founded": {
                    "description": "Year the company was founded",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update company profile"
              }
            },
            {
              "name": "get_company_perks",
              "title": "Get company perks",
              "description": "Get your company's perks/benefits on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get company perks"
              }
            },
            {
              "name": "add_company_perk",
              "title": "Add company perk",
              "description": "Add a perk/benefit to your company on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "category": {
                    "description": "Perk category",
                    "enum": [
                      "Healthcare benefits",
                      "Retirement benefits",
                      "Paid parental leave",
                      "Equity benefits",
                      "Location independent salary",
                      "Profit sharing",
                      "4-day workweeks",
                      "Generous vacation",
                      "Paid vacation",
                      "Sabbaticals",
                      "Unlimited time off",
                      "Company meals",
                      "Wellness benefits",
                      "Home office budget",
                      "Co-working space budget",
                      "Commuter benefits",
                      "Pet-friendly office",
                      "Learning and development budget",
                      "Company events",
                      "Volunteer opportunities",
                      "Open source",
                      "Company credit card",
                      "Life insurance",
                      "Employee assistance program (EAP)",
                      "Flexible working hours",
                      "Disability insurance",
                      "Fertility benefits",
                      "Company retreats",
                      "Get paid in crypto",
                      "Miscellaneous"
                    ],
                    "type": "string"
                  },
                  "description": {
                    "description": "Perk description (15-450 characters)",
                    "maxLength": 450,
                    "minLength": 15,
                    "type": "string"
                  },
                  "title": {
                    "description": "Perk title (3-50 characters)",
                    "maxLength": 50,
                    "minLength": 3,
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "category",
                  "description"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Add company perk"
              }
            },
            {
              "name": "remove_company_perk",
              "title": "Remove company perk",
              "description": "Remove a perk/benefit from your company on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "id": {
                    "description": "Perk ID to remove (use get_company_perks to find IDs)",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Remove company perk"
              }
            },
            {
              "name": "update_company_tech_stack",
              "title": "Update company tech stack",
              "description": "Update your company's tech stack on Himalayas. Pass technology names (e.g., 'React', 'Python') and they'll be matched to the Himalayas stack database. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "stacks": {
                    "description": "Array of technology names (e.g., ['React', 'TypeScript', 'Python', 'AWS'])",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "stacks"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update company tech stack"
              }
            },
            {
              "name": "list_company_jobs",
              "title": "List company jobs",
              "description": "List your company's job postings on Himalayas. Shows status, views, clicks, and expiry. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "page": {
                    "description": "Page number for pagination (starts at 1)",
                    "maximum": 9007199254740991,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List company jobs"
              }
            },
            {
              "name": "show_company_job",
              "title": "Get company job",
              "description": "Get full details of one of your company's job postings on Himalayas. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "job_slug": {
                    "description": "Job slug (from list_company_jobs)",
                    "type": "string"
                  }
                },
                "required": [
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get company job"
              }
            },
            {
              "name": "create_company_job",
              "title": "Create company job",
              "description": "Post a remote job on Himalayas for the user's company, to hire remote staff. Posting a job is free; it needs admin approval before going live, and can also be saved as a draft. The optional extras are paid: sticky ($299) and newsletter ($99). With any extras, the reply is a Stripe checkout link the user opens and pays themselves, and the job doesn't go live until that payment completes; without extras nothing is charged. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "app_link_or_email": {
                    "description": "Application URL or email address — backend auto-detects via @ check",
                    "type": "string"
                  },
                  "base_salary": {
                    "description": "Minimum salary",
                    "type": "number"
                  },
                  "category_list": {
                    "description": "Comma-separated job categories",
                    "type": "string"
                  },
                  "description": {
                    "description": "Job description (350+ characters, can include HTML)",
                    "minLength": 350,
                    "type": "string"
                  },
                  "draft": {
                    "description": "Save as draft instead of submitting for approval",
                    "type": "boolean"
                  },
                  "employment_type": {
                    "description": "Employment type",
                    "enum": [
                      "Full Time",
                      "Part Time",
                      "Contractor",
                      "Temporary",
                      "Intern",
                      "Volunteer",
                      "Other"
                    ],
                    "type": "string"
                  },
                  "extras": {
                    "description": "Paid extras: 'sticky' ($299 pin to top for 30 days), 'newsletter' ($99 feature in weekly email for 30 days)",
                    "items": {
                      "enum": [
                        "sticky",
                        "newsletter"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "max_salary": {
                    "description": "Maximum salary",
                    "type": "number"
                  },
                  "salary_country": {
                    "description": "Salary currency code (default: USD)",
                    "type": "string"
                  },
                  "screening_questions": {
                    "description": "Screening questions for applicants",
                    "items": {
                      "properties": {
                        "correct_option": {
                          "description": "Index of correct option (for mpc type)",
                          "type": "number"
                        },
                        "expected_answer": {
                          "description": "Expected answer (for boolean: 'true'/'false')",
                          "type": "string"
                        },
                        "options": {
                          "description": "Answer options (for mpc type)",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "question": {
                          "description": "Question text",
                          "type": "string"
                        },
                        "question_type": {
                          "description": "Question type",
                          "enum": [
                            "boolean",
                            "text",
                            "mpc"
                          ],
                          "type": "string"
                        },
                        "required": {
                          "description": "Whether answer is required",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "question",
                        "question_type"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "seniority": {
                    "description": "Seniority levels",
                    "items": {
                      "enum": [
                        "Entry-level",
                        "Mid-level",
                        "Senior",
                        "Manager",
                        "Director",
                        "Executive"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "skill_list": {
                    "description": "Comma-separated skills",
                    "type": "string"
                  },
                  "title": {
                    "description": "Job title (5-80 characters)",
                    "maxLength": 80,
                    "minLength": 5,
                    "type": "string"
                  },
                  "valid_through": {
                    "description": "Expiration date (ISO format, defaults to 30 days from now)",
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "description",
                  "employment_type",
                  "seniority",
                  "app_link_or_email"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Create company job"
              }
            },
            {
              "name": "update_company_job",
              "title": "Update company job",
              "description": "Update an existing job posting on Himalayas. Only provide fields you want to change. For screening_questions, provide the full set — questions not included will be removed. Editing is free. If the job has paid extras (sticky or newsletter, chosen earlier) that aren't paid yet, the reply is a Stripe checkout link for them, which the user opens and pays themselves; nothing is charged otherwise. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "app_link_or_email": {
                    "description": "Application URL or email address",
                    "type": "string"
                  },
                  "base_salary": {
                    "description": "Minimum salary",
                    "type": "number"
                  },
                  "category_list": {
                    "description": "Comma-separated job categories",
                    "type": "string"
                  },
                  "description": {
                    "description": "Job description (350+ characters, can include HTML)",
                    "minLength": 350,
                    "type": "string"
                  },
                  "draft": {
                    "description": "Save as draft instead of submitting for approval",
                    "type": "boolean"
                  },
                  "employment_type": {
                    "description": "Employment type",
                    "enum": [
                      "Full Time",
                      "Part Time",
                      "Contractor",
                      "Temporary",
                      "Intern",
                      "Volunteer",
                      "Other"
                    ],
                    "type": "string"
                  },
                  "job_slug": {
                    "description": "Job slug to update",
                    "type": "string"
                  },
                  "max_salary": {
                    "description": "Maximum salary",
                    "type": "number"
                  },
                  "salary_country": {
                    "description": "Salary currency code",
                    "type": "string"
                  },
                  "screening_questions": {
                    "description": "Screening questions — provide full set, questions not included will be removed",
                    "items": {
                      "properties": {
                        "correct_option": {
                          "description": "Index of correct option",
                          "type": "number"
                        },
                        "expected_answer": {
                          "description": "Expected answer",
                          "type": "string"
                        },
                        "id": {
                          "description": "Existing question ID (omit for new questions)",
                          "type": "number"
                        },
                        "options": {
                          "description": "Answer options (for mpc type)",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "question": {
                          "description": "Question text",
                          "type": "string"
                        },
                        "question_type": {
                          "description": "Question type",
                          "enum": [
                            "boolean",
                            "text",
                            "mpc"
                          ],
                          "type": "string"
                        },
                        "required": {
                          "description": "Whether answer is required",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "question",
                        "question_type"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "seniority": {
                    "description": "Seniority levels",
                    "items": {
                      "enum": [
                        "Entry-level",
                        "Mid-level",
                        "Senior",
                        "Manager",
                        "Director",
                        "Executive"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "skill_list": {
                    "description": "Comma-separated skills",
                    "type": "string"
                  },
                  "title": {
                    "description": "Job title (5-80 characters)",
                    "maxLength": 80,
                    "minLength": 5,
                    "type": "string"
                  },
                  "valid_through": {
                    "description": "Expiration date (ISO format)",
                    "type": "string"
                  }
                },
                "required": [
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Update company job"
              }
            },
            {
              "name": "delete_company_job",
              "title": "Delete company job",
              "description": "Delete a job posting from your company on Himalayas. This action cannot be undone. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "job_slug": {
                    "description": "Job slug to delete",
                    "type": "string"
                  }
                },
                "required": [
                  "job_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete company job"
              }
            },
            {
              "name": "purchase_job_extras",
              "title": "Purchase job extras",
              "description": "Purchase paid extras for an existing job posting: sticky ($299), newsletter ($99). Returns a Stripe checkout URL. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "extras": {
                    "description": "Extras to purchase: 'sticky' ($299 pin to top), 'newsletter' ($99 weekly email feature)",
                    "items": {
                      "enum": [
                        "sticky",
                        "newsletter"
                      ],
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "job_slug": {
                    "description": "Job slug to add extras to",
                    "type": "string"
                  }
                },
                "required": [
                  "job_slug",
                  "extras"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Purchase job extras"
              }
            },
            {
              "name": "check_job_payment_status",
              "title": "Check job payment status",
              "description": "Check the payment status of a job posting. Use the session_id returned from create_company_job, update_company_job or purchase_job_extras with extras. No authentication required.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "session_id": {
                    "description": "Stripe checkout session ID",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "session_id"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Check job payment status"
              }
            },
            {
              "name": "list_conversations",
              "title": "List employer conversations",
              "description": "List all your messaging conversations with last message preview. Shows conversation status (awaiting reply, new reply, read). Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List employer conversations"
              }
            },
            {
              "name": "get_conversation",
              "title": "Get employer conversation",
              "description": "Get full message history for a conversation. Accepts room_name or talent_slug. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "room_name": {
                    "description": "Room name from list_conversations",
                    "type": "string"
                  },
                  "talent_slug": {
                    "description": "Talent slug (from search_talent results) — resolves to room name automatically",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get employer conversation"
              }
            },
            {
              "name": "start_conversation",
              "title": "Start conversation with candidate",
              "description": "Start a conversation with a candidate by talent slug, optionally with a first message. If the conversation already exists, returns it. Use search_talent to find candidates first, then use their slug here. A first message takes two calls: without confirm_token nothing is created or sent, and the reply is a preview of the exact text with a confirm_token; calling again with the same message and that token sends it. The candidate reads it as coming from the user's company and it can't be unsent, so show the user the preview and get their OK before the second call. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "confirm_token": {
                    "description": "Leave out to get a preview; nothing is sent. Pass the token from that preview, with the same message, to send it",
                    "type": "string"
                  },
                  "message": {
                    "description": "Optional initial message to send with the conversation",
                    "type": "string"
                  },
                  "talent_slug": {
                    "description": "Talent slug of the candidate to message (from search_talent results)",
                    "type": "string"
                  }
                },
                "required": [
                  "talent_slug"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Start conversation with candidate"
              }
            },
            {
              "name": "send_message",
              "title": "Send message to candidate",
              "description": "Send a message in an existing conversation. Accepts room_name (from list_conversations) or talent_slug (from search_talent). Use start_conversation first if no conversation exists yet. Sending takes two calls: without confirm_token nothing is sent, and the reply is a preview of the exact text with a confirm_token; calling again with the same message and that token sends it. The candidate reads it as coming from the user's company and it can't be unsent, so show the user the preview and get their OK before the second call. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "confirm_token": {
                    "description": "Leave out to get a preview; nothing is sent. Pass the token from that preview, with the same message, to send it",
                    "type": "string"
                  },
                  "message": {
                    "description": "Message text to send",
                    "type": "string"
                  },
                  "room_name": {
                    "description": "Room name from list_conversations",
                    "type": "string"
                  },
                  "talent_slug": {
                    "description": "Talent slug (from search_talent results) — resolves to room name automatically",
                    "type": "string"
                  }
                },
                "required": [
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Send message to candidate"
              }
            },
            {
              "name": "mark_message_read",
              "title": "Mark employer message read",
              "description": "Mark a message as read by its ID. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "message_id": {
                    "description": "Message ID to mark as read",
                    "type": "number"
                  },
                  "room_name": {
                    "description": "Room name from list_conversations",
                    "type": "string"
                  },
                  "talent_slug": {
                    "description": "Talent slug (from search_talent results) — resolves to room name automatically",
                    "type": "string"
                  }
                },
                "required": [
                  "message_id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Mark employer message read"
              }
            },
            {
              "name": "delete_conversation",
              "title": "Delete employer conversation",
              "description": "Delete a conversation. Accepts room_name or talent_slug. Uses the connected Himalayas employer account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "room_name": {
                    "description": "Room name from list_conversations",
                    "type": "string"
                  },
                  "talent_slug": {
                    "description": "Talent slug (from search_talent results) — resolves to room name automatically",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Delete employer conversation"
              }
            },
            {
              "name": "list_my_conversations",
              "title": "List my inbox",
              "description": "List the user's job seeker inbox: conversations companies and recruiters started with them on Himalayas, newest first, with the last message and whether it needs a reply. For an employer's conversations with candidates, use list_conversations. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List my inbox"
              }
            },
            {
              "name": "get_my_conversation",
              "title": "Get inbox conversation",
              "description": "Read the latest 30 messages in one conversation in the user's job seeker inbox. Message text is quoted as the sender wrote it. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "room_name": {
                    "description": "Room name from list_my_conversations",
                    "type": "string"
                  }
                },
                "required": [
                  "room_name"
                ],
                "type": "object"
              },
              "annotations": {
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get inbox conversation"
              }
            },
            {
              "name": "reply_to_message",
              "title": "Reply in inbox",
              "description": "Send a reply in a conversation in the user's job seeker inbox. Sending takes two calls: without confirm_token nothing is sent, and the reply is a preview of the exact text with a confirm_token; calling again with the same message and that token sends it. The company reads it as coming from the user and it can't be unsent, so show the user the preview and get their OK before the second call. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "confirm_token": {
                    "description": "Leave out to get a preview; nothing is sent. Pass the token from that preview, with the same message, to send it",
                    "type": "string"
                  },
                  "message": {
                    "description": "The reply, exactly as the user approved it",
                    "type": "string"
                  },
                  "room_name": {
                    "description": "Room name from list_my_conversations",
                    "type": "string"
                  }
                },
                "required": [
                  "room_name",
                  "message"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Reply in inbox"
              }
            },
            {
              "name": "mark_my_message_read",
              "title": "Mark inbox message read",
              "description": "Mark a message in the user's job seeker inbox as read. Uses the connected Himalayas account; no extra sign-in needed.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "message_id": {
                    "description": "Message id from get_my_conversation",
                    "type": "number"
                  },
                  "room_name": {
                    "description": "Room name from list_my_conversations",
                    "type": "string"
                  }
                },
                "required": [
                  "room_name",
                  "message_id"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Mark inbox message read"
              }
            }
          ],
          "schemaTokens": 18465,
          "changedAt": "2026-11-08T01:58:55.587715046Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 18465,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 13
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "delete_document",
                "message": "1 parameter without a description: type",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "get_document",
                "message": "1 parameter without a description: type",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "submit_feedback",
                "message": "2 parameters without a description: metadata, request_id",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "update_document",
                "message": "1 parameter without a description: type",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "update_education",
                "message": "7 parameters without a description: activities, degree, description, end_year, grade, school and 1 more",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "update_experience",
                "message": "1 parameter without a description: employment_type",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "update_profile_photo",
                "message": "1 parameter without a description: kind",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "add_company_perk",
                "message": "described almost the same as remove_company_perk (86% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_company_profile",
                "message": "described almost the same as update_company_profile (85% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "save_job",
                "message": "described almost the same as remove_saved_job (85% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "update_experience",
                "message": "described almost the same as update_education (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "update_profile",
                "message": "described almost the same as update_company_profile (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC23",
                "severity": "warn",
                "message": "78 tools, about 18,491 tokens of definitions",
                "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "78 of 78 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-11-08T15:05:31.827107623Z"
      },
      "streak": {
        "days": 1,
        "from": "2026-11-07",
        "sinceWatching": true,
        "best": 1
      }
    },
    "answer": "Pinpoint scores 58.2 (C) on agent readiness against Himalayas Remote Jobs MCP's 47.8 (D), and leads in 5 of 7 scored categories. Himalayas Remote Jobs MCP leads on payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "pinpoint",
      "name": "Pinpoint",
      "vendor": "The Infuse Group Limited (trading as Pinpoint Software)",
      "vendorUrl": "https://www.pinpointhq.com",
      "kind": "http-api",
      "category": "recruiting",
      "summary": "Pinpoint is an applicant tracking system for in-house recruiting teams. Agents reach jobs, candidates, applications, interviews and requisitions through a JSON:API REST API with per-category API keys, webhooks and two hosted MCP servers.",
      "url": "https://www.anchorterminal.com/tools/pinpoint",
      "markdownUrl": "https://www.anchorterminal.com/tools/pinpoint.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pinpoint.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pinpoint.json",
      "dns": "pinpoint.grade.anchorterminal.com",
      "license": "Proprietary service under Pinpoint's Sales Agreement",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://developers.pinpointhq.com/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Self-serve for a customer. An admin turns on the Pinpoint API toggle under Settings, API \u0026 Webhooks and creates a key, choosing none, read, or write and delete for each data category. The key is sent in the `X-API-KEY` header and can be edited or deleted. The per-tenant MCP server at `https://{subdomain}.pinpointhq.com/mcp` uses OAuth with PKCE and dynamic client registration once an admin turns on MCP / external agent access. Integration vendors email integrations@pinpointhq.com for a demo account and add an `x-vendor-name` header to every request.",
      "pricing": "paid",
      "pricingNotes": "Prices are by quote. The site has a request pricing form that leads to a sales call, and no plan prices, free tier, sandbox or self-serve trial were found. API calls aren't metered in the documents we read. Integration vendors can ask for a demo account by email (https://www.pinpointhq.com/request-pricing, checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI definitions or the request pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 5,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.pinpointhq.com/",
      "llmsTxt": "https://developers.pinpointhq.com/llms.txt",
      "capabilities": [
        "recruiting.candidates",
        "recruiting.jobs",
        "recruiting.applications"
      ],
      "tags": [
        "hosted",
        "paid",
        "sales-led",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "closed-source",
        "status-page",
        "soc2",
        "iso27001"
      ],
      "lastRelease": "2026-08-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.2,
        "grade": "C",
        "agentReady": false,
        "rank": 758,
        "ranked": true,
        "rankOf": 1513,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 40,
          "payments": 0,
          "reliability": 64,
          "schema": 77,
          "security": 78,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-08-04. A change that made working requests fail, posted after it took effect, -3. Changelog 1.0.28, posted on 4 August 2026, says US address handling changed in May 2026, so writing `address2` on a US record, or changing `country` across the US boundary without the new fields, is now rejected. No earlier notice was found in the changelog or the April and May 2026 release posts. Source https://developers.pinpointhq.com/changelog/1028.md"
        ],
        "verdict": "API keys carry none, read or write permission per data category, and every request is logged with the key and IP address. Prices are by quote with no trial found, no request rate limit is published, and a May 2026 change that rejects some US address writes was announced only in August.",
        "bestFor": "Companies already on Pinpoint that want an agent to read jobs and pipelines, create and update applications, move a candidate between stages, comment, tag and manage requisitions.",
        "strengths": [
          "API keys are set to none, read, or write and delete for each data category, and an admin can edit or delete a key at any time",
          "An API Logs tab records each request with path, method, response code, key, IP address and duration",
          "Every reference page is served as Markdown with an OpenAPI 3.0.1 definition, 113 operations in all, indexed by `llms.txt`",
          "Sparse fieldsets, `include`, filters, `sort` and `page[size]` up to 1,000 let a client size each response",
          "The July 2026 Sales Agreement sets a 99.5 per cent monthly uptime target with service credits of 3 to 30 days"
        ],
        "weaknesses": [
          "No prices are published. The site has a request pricing form, and no free tier, sandbox or self-serve trial was found",
          "No request rate limit is published. A 429 response is documented with no numbers, no `Retry-After` header and no backoff guidance",
          "Writes of `address2` on US records have been rejected since May 2026, a change the changelog posted on 4 August 2026",
          "No idempotency keys on writes, and no official SDK was found",
          "Interviews are list, fetch and update of the summary only. No endpoint schedules one, and no endpoint exposes a job offer directly",
          "No guidance for API or MCP clients on untrusted candidate text such as CVs, cover letters and answers was found"
        ],
        "agentNotes": [
          "Call `https://{subdomain}.pinpointhq.com/api/v1` with an `X-API-KEY` header. The Pinpoint API toggle under Settings, API \u0026 Webhooks must be on",
          "Ask the admin for a key with read permission on only the categories needed. The MCP guide recommends a separate read-only key for AI tools",
          "Add `filter[job_visibility]=confidential,external,internal,private_job` to see applications on confidential jobs, which list calls leave out by default",
          "Set `skip_notifications_on_create` to `true` when creating an application unless the applicant should receive the Application Received email",
          "For US records write the city to `town` and the state to `state_province`, and leave `address2` empty, or the write is rejected",
          "Use `fields[applications]` and `page[size]` to keep responses small, and filter on `external_system_reference` before a create to avoid duplicates on retry"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.2
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 40,
          "payments": 0,
          "reliability": 64,
          "schema": 77,
          "security": 78,
          "transparency": 59
        },
        "provenanceScore": 96,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"X-API-KEY: \u003cAPI KEY\u003e\" https://\u003csubdomain\u003e.pinpointhq.com/api/v1/jobs",
        "claudeCode": "claude mcp add --transport http pinpoint https://developers.pinpointhq.com/mcp",
        "config": {
          "mcpServers": {
            "pinpoint": {
              "headers": {
                "X-API-KEY": "\u003cYOUR-PINPOINT-API-KEY\u003e",
                "X-Original-Host": "\u003cYOUR-SUBDOMAIN\u003e.pinpointhq.com"
              },
              "type": "http",
              "url": "https://developers.pinpointhq.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/recruiting.candidates",
        "tool": "https://letme.dev/pinpoint"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "The Infuse Group Limited, trading as Pinpoint Software (Jersey, registration number 124135)",
        "domain": "pinpointhq.com",
        "domainRegistered": "2014-12-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.pinpointhq.com/security-privacy/sales-agreement-07-2026",
        "privacy": "https://www.pinpointhq.com/security-privacy/privacy-policy",
        "statusPage": "https://status.pinpoint.support",
        "changelog": "https://developers.pinpointhq.com/changelog",
        "securityTxt": "valid",
        "checked": "2026-11-02",
        "notes": [
          "The legal page names The Infuse Group Limited (t/a Pinpoint Software), registration number 124135, registered office 9 Bond Street, St. Helier, Jersey, JE2 3NP.",
          "The terms link is the Sales Agreement of July 2026, which forms part of each customer's quote and is governed by English law. No separate API terms were found.",
          "The privacy policy names a data protection officer at One Waverley Place, Union Street, St Helier, Jersey. Customer data is covered by the Data Processing Addendum of July 2026.",
          "The API answers at https://{subdomain}.pinpointhq.com/api/v1 and the MCP servers at developers.pinpointhq.com and the customer's subdomain. The docs are a ReadMe site on developers.pinpointhq.com.",
          "Tenant hosts such as workwithus.pinpointhq.com return a security.txt with a contact, a policy link and an expiry of 31 December 2027 (read on 2 November 2026). app.pinpointhq.com now disallows crawlers in robots.txt, so its 8 October reading is struck. www.pinpointhq.com and developers.pinpointhq.com returned 404 for the same path on 8 October.",
          "The status page is on a second domain, status.pinpoint.support, linked from the vendor's site.",
          "RDAP for pinpointhq.com gives a registration date of 2014-12-23."
        ],
        "score": 96
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pinpoint.json",
      "live": {
        "slug": "pinpoint",
        "probe": {
          "target": "https://developers.pinpointhq.com/mcp",
          "method": "get",
          "lastAt": "2026-11-08T15:05:44.844209801Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 69,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 58,
          "p95ms24h": 244,
          "samples24h": 242,
          "samples30d": 7629,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 153,
              "ok": 153
            }
          ],
          "since": "2026-10-08T00:00:00Z"
        },
        "vendorStatus": {
          "page": "https://status.pinpoint.support",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-08T15:03:18.450188688Z"
        },
        "securityTxt": {
          "url": "https://pinpointhq.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:41.919425371Z"
        },
        "llmsTxt": {
          "url": "https://developers.pinpointhq.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:37.840295804Z"
        },
        "domain": {
          "domain": "pinpointhq.com",
          "registered": "2014-12-23",
          "source": "https://rdap.verisign.com/com/v1/domain/pinpointhq.com",
          "checkedAt": "2026-11-08T15:06:55.601834337Z"
        },
        "pages": [
          {
            "url": "https://developers.pinpointhq.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-08T14:55:29.190437546Z",
            "changedAt": "2026-11-07T14:04:29.76139445Z",
            "fingerprint": "183fd66444d1"
          },
          {
            "url": "https://www.pinpointhq.com/request-pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:33:00.893493423Z",
            "changedAt": "2026-11-06T13:53:33.522470328Z",
            "fingerprint": "deac6ebceb19"
          },
          {
            "url": "https://www.pinpointhq.com/security-privacy/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:33:02.975602141Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a1ffdd8adf9d"
          },
          {
            "url": "https://www.pinpointhq.com/security-privacy/sales-agreement-07-2026",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:33:05.043381467Z",
            "changedAt": "2026-10-29T05:26:25.765714464Z",
            "fingerprint": "241cf91d90e3"
          }
        ],
        "mcpTools": {
          "url": "https://developers.pinpointhq.com/mcp",
          "checkedAt": "2026-11-08T02:00:37.258596151Z",
          "status": "ok",
          "protocol": "2026-07-28",
          "tools": [
            {
              "name": "list-endpoints",
              "title": "List API Endpoints",
              "description": "Lists all API paths and their HTTP methods with summaries, organized by path. Results can be passed directly into 'get-endpoint'.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "get-endpoint",
              "title": "Get Endpoint Details",
              "description": "Gets detailed information about a specific API endpoint, including security schemes and servers",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "method": {
                    "description": "The HTTP method (e.g. GET, POST, PUT, DELETE).",
                    "type": "string"
                  },
                  "path": {
                    "description": "The API endpoint path (e.g. /api/v1/users).",
                    "type": "string"
                  }
                },
                "required": [
                  "path",
                  "method"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "search-endpoints",
              "title": "Search API Endpoints",
              "description": "Performs a deep search through paths, operations, and parameters to discover relevant API endpoints. Use this tool to find specific API capabilities, required parameters, or data models based on search keywords. Results can be passed directly into 'get-endpoint'.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "pattern": {
                    "description": "Search pattern (case-insensitive)",
                    "type": "string"
                  }
                },
                "required": [
                  "pattern"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            },
            {
              "name": "execute-request",
              "title": "Execute API Request",
              "description": "Executes an API request with a given HAR request object.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {
                  "harRequest": {
                    "description": "HAR request object",
                    "properties": {
                      "headers": {
                        "items": {
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name",
                            "value"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "method": {
                        "description": "options, get, head, patch, post, put, delete",
                        "type": "string"
                      },
                      "postData": {
                        "anyOf": [
                          {
                            "properties": {
                              "mimeType": {
                                "description": "e.g. application/json, text/plain",
                                "type": "string"
                              },
                              "text": {
                                "description": "Raw request body as a string",
                                "type": "string"
                              }
                            },
                            "required": [
                              "mimeType",
                              "text"
                            ],
                            "type": "object"
                          },
                          {
                            "properties": {
                              "mimeType": {
                                "description": "e.g. multipart/form-data, application/x-www-form-urlencoded. Use multipart/form-data for form submissions.",
                                "type": "string"
                              },
                              "params": {
                                "description": "Form parameters. Use this instead of text for multipart/form-data and url-encoded requests.",
                                "items": {
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name"
                                  ],
                                  "type": "object"
                                },
                                "type": "array"
                              }
                            },
                            "required": [
                              "mimeType",
                              "params"
                            ],
                            "type": "object"
                          }
                        ]
                      },
                      "queryString": {
                        "items": {
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name",
                            "value"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "url": {
                        "description": "full url to call",
                        "format": "uri",
                        "type": "string"
                      }
                    },
                    "required": [
                      "method",
                      "url"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "harRequest"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false
              }
            },
            {
              "name": "get-server-variables",
              "title": "Get Server Variables",
              "description": "Gets the server variables for each server within a specific OpenAPI spec.",
              "inputSchema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "type": "object"
              },
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 879,
          "changedAt": "2026-11-07T01:46:50.573014736Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 879,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 1
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "execute-request",
                "message": "4 parameters without a description: harRequest.headers[].name, harRequest.headers[].value, harRequest.queryString[].name, harRequest.queryString[].value",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "5 of 5 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-11-08T15:06:55.601834337Z"
      },
      "streak": {
        "days": 31,
        "from": "2026-10-08",
        "sinceWatching": true,
        "best": 31
      }
    },
    "edges": [
      {
        "by": 50,
        "category": "payments",
        "leads": "himalayas-mcp",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No machine payment protocol; paid extras return Stripe checkout links (0). Plus price public (10 of 20). Free search and posting (20). Public tools need no account (20). 0 + 10 + 20 + 20 = 50.",
          "b": "No x402, MPP or L402 (0). No prices are published. The site has a request pricing form that leads to a sales call (0). No free tier, sandbox or self-serve trial was found. Integration vendors can ask for a demo account by email (0). A customer admin creates the key in settings, and the MCP servers need that key or a browser sign-in (0). 0 + 0 + 0 + 0 = 0."
        },
        "scores": {
          "a": 50,
          "b": 0
        }
      },
      {
        "by": 39,
        "category": "reliability",
        "leads": "pinpoint",
        "name": "Reliability",
        "reasons": {
          "a": "No status page found (0). No history (5). Some limits documented with numbers (100 candidate searches a day, 10 messages a minute) (10 of 15). No retry guidance (0). No SLA (0). Not labelled beta; the old SSE endpoint is retired with 410 Gone (10). 0 + 5 + 10 + 0 + 0 + 10 = 25.",
          "b": "Graded on the REST API with the hosted lines. Statuspage site at status.pinpoint.support with three components (Pinpoint, Pinpoint Support, Social Advertising) and incident history, none named for the API (20). The history feed read on 2 November has one incident in the 90 days from 4 August, emails stuck in sending for 6 hours 41 minutes on 1 September 2026, which hit one function and reads as minor (20). The 8 October reading came from the page's /api/ path, which its robots.txt disallows, and is replaced by the feed. No request rate limit with numbers was found in the developer docs, llms.txt or the help centre (0). Every operation documents a 429 response with the code `too_many_requests`, but no `Retry-After` header, no backoff guidance and no idempotency keys were found (4). The July 2026 Sales Agreement sets a 99.5 per cent monthly uptime target with service credits, per the 8 October check, not re-read on 2 November (10). The API is v1 with a changelog at 1.0.28 and no beta label (10). 20 + 20 + 0 + 4 + 10 + 10 = 64."
        },
        "scores": {
          "a": 25,
          "b": 64
        }
      },
      {
        "by": 36,
        "category": "security",
        "leads": "pinpoint",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.1 with PKCE and client metadata documents (25 of 30). Read-only public set; writes such as send_message and job posts are annotated (12 of 20). Job posts and recruiter messages are third-party text with no injection guidance (0). No audit log (0). No security.txt (404) or certifications found (5 of 20). The privacy policy follows the Australian Privacy Principles. 25 + 12 + 0 + 0 + 5 = 42.",
          "b": "API keys are sent in the `X-API-KEY` header only. Each key is set to none, read, or write and delete per data category, can be edited and deleted, and several can exist. No expiry or rotation setting is described. The per-tenant MCP server uses OAuth with PKCE (S256), dynamic client registration, a revocation endpoint and two scopes, `tools:read` and `tools:write` (27). A key can be read-only, the MCP guide recommends a read-only key for AI tools, and the per-tenant MCP server acts with the signed-in user's permissions. No per-action confirmation is documented beyond the OAuth consent screen (15). CVs, cover letters and answers are candidate-written. The AI approach page lists red-teaming and guardrails for Pinpoint's own AI, and nothing addresses API or MCP clients (5). An API Logs tab lists every request with path, method, response, key, IP address and duration, and MCP actions are recorded against the user (15). ISO 27001, ISO 42001 and SOC 2 Type II, annual third-party penetration tests, and a valid `security.txt` on tenant hosts (contact security@pinpointhq.com, expiry 31 December 2027, read on 2 November on workwithus.pinpointhq.com; app.pinpointhq.com now disallows crawlers, so the 8 October reading there is struck). The vulnerability disclosure page still has no body. No bug bounty was found (16). 27 + 15 + 5 + 15 + 16 = 78."
        },
        "scores": {
          "a": 42,
          "b": 78
        }
      },
      {
        "by": 32,
        "category": "transparency",
        "leads": "pinpoint",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under terms naming Himalayas Remote Jobs Pty Ltd (15). Privacy policy under the Australian Privacy Principles; retention periods not given (15 of 30). Dated retirement of the SSE endpoint (10 of 20). Subprocessors not found (5 of 20). 15 + 15 + 10 + 5 = 45.",
          "b": "Closed service with a published Sales Agreement, dated July 2026 and governed by English law. The August 2025 and October 2025 versions are paths robots.txt now closes (15). The privacy policy, the Data Processing Addendum of July 2026 and the Sales Agreement are published. The addendum promises deletion within 30 days of termination and breach notice within 72 hours, while the security FAQ says 15 days for production and 45 days for backups, a small disagreement, per the 8 October check (22). No deprecation policy was found. Changelog 1.0.28 describes a change to US address fields made in May 2026 and calls two write restrictions temporary, with no end date (4). 21 sub-processors listed with purpose and location, updated 16 October 2025. Data is stored in Amsterdam, Dublin and London on AWS and DigitalOcean, and the sub-processor list adds Frankfurt (18). 15 + 22 + 4 + 18 = 59."
        },
        "scores": {
          "a": 46,
          "b": 78
        }
      },
      {
        "by": 15,
        "category": "ergonomics",
        "leads": "pinpoint",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "79 tools, about 78 KB (5), split into public, job-seeker and employer sets (5 back). Filters and paging on search (15 of 20). Errors not documented (5 of 20). All visible tools annotated, 34 read-only (20). Public tools work with no setup (8 of 15). 10 + 15 + 5 + 20 + 8 = 58.",
          "b": "`fields[...]` sparse fieldsets for each resource type, `extra_fields` for costly attributes, `include` for related records and a `.json` suffix for a plainer body (22). `page[number]` and `page[size]` (default 100, maximum 1,000), `sort`, `stats[total]=count` and filters by job, stage, email, phone, dates and visibility (20). JSON:API errors with `code`, `status`, `title` and `detail`, such as X-API-KEY header not provided, with a help centre table of status codes (16). No idempotency keys. `external_system_reference` can be written and filtered on, creates are rejected for duplicate candidates where the company disallows them, and all five tools on the documentation MCP server carry `readOnlyHint` and `destructiveHint` (8). Create Application needs three attributes and a job, and list calls need none. No official SDK was found (7). 22 + 20 + 16 + 8 + 7 = 73."
        },
        "scores": {
          "a": 58,
          "b": 73
        }
      },
      {
        "by": 10,
        "category": "maintenance",
        "leads": "himalayas-mcp",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Registry update and tag v1.0.3 on 21 October 2026 (30). Fewer than three dated releases found in 90 days (0). Repository issues not read (0). Official registry entry app.himalayas/mcp (15). Docs repository with server.json; server source not public (5 of 10). 30 + 0 + 0 + 15 + 5 = 50. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API.",
          "b": "Changelog entry 1.0.28 was posted on 4 August 2026 per the changelog page, 90 days before 2 November, the last day it counts, and no newer entry is listed in llms.txt (20). One API changelog entry falls in the 90 days from 4 August. The website also has monthly product release posts for August, September and October 2026, dated only by month and about the product rather than the API, so we give half (10). A public changelog, an integrations email address and a help centre with live chat (10). No official SDK was found, and we couldn't reach the official MCP registry to look for an entry (0). No packages to assess (0). 20 + 10 + 10 + 0 + 0 = 40."
        },
        "scores": {
          "a": 50,
          "b": 40
        }
      }
    ],
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Himalayas Remote Jobs Pty Ltd",
        "b": "The Infuse Group Limited (trading as Pinpoint Software)",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.himalayas.app/mcp",
        "b": "https://developers.pinpointhq.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service. The repository's MIT licence covers its docs and manifest",
        "b": "Proprietary service under Pinpoint's Sales Agreement",
        "name": "Licence"
      },
      {
        "a": "79",
        "b": "5",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "app.himalayas/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "none",
        "b": "2026-08-04",
        "name": "Last release"
      },
      {
        "a": "not read yet",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "not read yet",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "2.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pinpoint scores 58.2 (C) on agent readiness against Himalayas Remote Jobs MCP's 47.8 (D), and leads in 5 of 7 scored categories. Himalayas Remote Jobs MCP leads on payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Himalayas Remote Jobs MCP or Pinpoint?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Himalayas Remote Jobs MCP and Pinpoint need an API key?"
      },
      {
        "answer": "Yes. Himalayas Remote Jobs MCP has a hosted endpoint at https://mcp.himalayas.app/mcp and Pinpoint at https://developers.pinpointhq.com/mcp.",
        "question": "Can an agent call Himalayas Remote Jobs MCP and Pinpoint without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 50 against 0",
          "Maintenance \u0026 community, 50 against 40"
        ],
        "also": [
          "No incidents deducted, where Pinpoint loses 3 points for them"
        ],
        "goodFor": "Agents helping people find remote jobs and salary data, or helping employers post jobs and reach candidates.",
        "slug": "himalayas-mcp",
        "watchFor": "79 tools, a heavy context load"
      },
      {
        "aheadOn": [
          "Reliability, 64 against 25",
          "Schema \u0026 documentation, 77 against 70",
          "Agent ergonomics, 73 against 58",
          "Security \u0026 auth, 78 against 42",
          "Transparency \u0026 trust, 78 against 46"
        ],
        "also": null,
        "goodFor": "Companies already on Pinpoint that want an agent to read jobs and pipelines, create and update applications, move a candidate between stages, comment, tag and manage requisitions.",
        "slug": "pinpoint",
        "watchFor": "No prices are published. The site has a request pricing form, and no free tier, sandbox or self-serve trial was found"
      }
    ],
    "history": {
      "himalayas-mcp": null,
      "pinpoint": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-02",
          "delta": -3,
          "from": 61.2,
          "fromGrade": "C",
          "to": 58.2,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "recruiting.candidates",
      "name": "Recruiting"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/ashby-vs-himalayas-mcp.json",
        "title": "Ashby vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/ashby-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ashby-vs-pinpoint.json",
        "title": "Ashby vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/ashby-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/breezy-hr-vs-himalayas-mcp.json",
        "title": "Breezy HR vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/breezy-hr-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/breezy-hr-vs-pinpoint.json",
        "title": "Breezy HR vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/breezy-hr-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bullhorn-vs-himalayas-mcp.json",
        "title": "Bullhorn vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/bullhorn-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bullhorn-vs-pinpoint.json",
        "title": "Bullhorn vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/bullhorn-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gem-vs-himalayas-mcp.json",
        "title": "Gem vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/gem-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gem-vs-pinpoint.json",
        "title": "Gem vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/gem-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/greenhouse-vs-himalayas-mcp.json",
        "title": "Greenhouse vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/greenhouse-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/greenhouse-vs-pinpoint.json",
        "title": "Greenhouse vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/greenhouse-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-lever.json",
        "title": "Himalayas Remote Jobs MCP vs Lever",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-lever"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-manatal.json",
        "title": "Himalayas Remote Jobs MCP vs Manatal",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-manatal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-recruitee.json",
        "title": "Himalayas Remote Jobs MCP vs Recruitee",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-recruitee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-smartrecruiters.json",
        "title": "Himalayas Remote Jobs MCP vs SmartRecruiters",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-smartrecruiters"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-teamtailor.json",
        "title": "Himalayas Remote Jobs MCP vs Teamtailor",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-teamtailor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-workable.json",
        "title": "Himalayas Remote Jobs MCP vs Workable",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-workable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-zoho-recruit.json",
        "title": "Himalayas Remote Jobs MCP vs Zoho Recruit",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-zoho-recruit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lever-vs-pinpoint.json",
        "title": "Lever vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/lever-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/manatal-vs-pinpoint.json",
        "title": "Manatal vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/manatal-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pinpoint-vs-recruitee.json",
        "title": "Pinpoint vs Recruitee",
        "url": "https://www.anchorterminal.com/compare/pinpoint-vs-recruitee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pinpoint-vs-smartrecruiters.json",
        "title": "Pinpoint vs SmartRecruiters",
        "url": "https://www.anchorterminal.com/compare/pinpoint-vs-smartrecruiters"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pinpoint-vs-teamtailor.json",
        "title": "Pinpoint vs Teamtailor",
        "url": "https://www.anchorterminal.com/compare/pinpoint-vs-teamtailor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pinpoint-vs-workable.json",
        "title": "Pinpoint vs Workable",
        "url": "https://www.anchorterminal.com/compare/pinpoint-vs-workable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pinpoint-vs-zoho-recruit.json",
        "title": "Pinpoint vs Zoho Recruit",
        "url": "https://www.anchorterminal.com/compare/pinpoint-vs-zoho-recruit"
      },
      {
        "json": "https://www.anchorterminal.com/compare/neverapply-vs-pinpoint.json",
        "title": "NeverApply vs Pinpoint",
        "url": "https://www.anchorterminal.com/compare/neverapply-vs-pinpoint"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ai-job-search-vs-himalayas-mcp.json",
        "title": "AI Job Search vs Himalayas Remote Jobs MCP",
        "url": "https://www.anchorterminal.com/compare/ai-job-search-vs-himalayas-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-neverapply.json",
        "title": "Himalayas Remote Jobs MCP vs NeverApply",
        "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-neverapply"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 39,
        "edge": "pinpoint",
        "himalayas-mcp": 25,
        "key": "reliability",
        "name": "Reliability",
        "pinpoint": 64,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "pinpoint",
        "himalayas-mcp": 70,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pinpoint": 77,
        "weight": 13
      },
      {
        "by": 15,
        "edge": "pinpoint",
        "himalayas-mcp": 58,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pinpoint": 73,
        "weight": 13
      },
      {
        "by": 36,
        "edge": "pinpoint",
        "himalayas-mcp": 42,
        "key": "security",
        "name": "Security \u0026 auth",
        "pinpoint": 78,
        "weight": 14
      },
      {
        "by": 50,
        "edge": "himalayas-mcp",
        "himalayas-mcp": 50,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pinpoint": 0,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "edge": "himalayas-mcp",
        "himalayas-mcp": 50,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pinpoint": 40,
        "weight": 7
      },
      {
        "by": 32,
        "edge": "pinpoint",
        "himalayas-mcp": 46,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pinpoint": 78,
        "weight": 7
      }
    ],
    "summary": "Pinpoint scores 58.2 (C) on agent readiness against Himalayas Remote Jobs MCP's 47.8 (D), and leads in 5 of 7 scored categories. Himalayas Remote Jobs MCP leads on payments \u0026 pricing and maintenance \u0026 community. Both do recruiting.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "himalayas-mcp": "Himalayas' MCP server is unusually complete for a jobs board, with public job and salary search that needs no account and OAuth 2.1 account tools for both job seekers and employers. Everything is annotated, but 79 tools is a lot of context, and there's no status page or changelog.",
      "pinpoint": "API keys carry none, read or write permission per data category, and every request is logged with the key and IP address. Prices are by quote with no trial found, no request rate limit is published, and a May 2026 change that rejects some US address writes was announced only in August."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint",
    "json": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint.min.md"
  },
  "markdown": "Pinpoint scores 58.2 (C) on agent readiness against Himalayas Remote Jobs MCP's 47.8 (D), and leads in 5 of 7 scored categories. Himalayas Remote Jobs MCP leads on payments \u0026 pricing and maintenance \u0026 community. Both do recruiting.\n\n- Himalayas Remote Jobs MCP: grade D, 47.8/100, rank #1145 of 1513. Markdown https://www.anchorterminal.com/tools/himalayas-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/himalayas-mcp.json\n- Pinpoint: grade C, 58.2/100, rank #758 of 1513. Markdown https://www.anchorterminal.com/tools/pinpoint.md · JSON https://www.anchorterminal.com/api/v1/tools/pinpoint.json\n- Best recruiting and applicant tracking systems for AI agents: https://www.anchorterminal.com/best/recruiting/index.md\n- All 106 recruiting comparisons: https://www.anchorterminal.com/compare/recruiting/index.md\n\n## Which one, for what\n\n### Himalayas Remote Jobs MCP (D)\n\nGood for: Agents helping people find remote jobs and salary data, or helping employers post jobs and reach candidates.\n\nAhead on:\n- Payments \u0026 pricing, 50 against 0\n- Maintenance \u0026 community, 50 against 40\n\nAlso in its favour:\n- No incidents deducted, where Pinpoint loses 3 points for them\n\nWatch for: 79 tools, a heavy context load\n\n### Pinpoint (C)\n\nGood for: Companies already on Pinpoint that want an agent to read jobs and pipelines, create and update applications, move a candidate between stages, comment, tag and manage requisitions.\n\nAhead on:\n- Reliability, 64 against 25\n- Schema \u0026 documentation, 77 against 70\n- Agent ergonomics, 73 against 58\n- Security \u0026 auth, 78 against 42\n- Transparency \u0026 trust, 78 against 46\n\nWatch for: No prices are published. The site has a request pricing form, and no free tier, sandbox or self-serve trial was found\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Himalayas Remote Jobs MCP +50\n\n- Himalayas Remote Jobs MCP (50): No machine payment protocol; paid extras return Stripe checkout links (0). Plus price public (10 of 20). Free search and posting (20). Public tools need no account (20). 0 + 10 + 20 + 20 = 50.\n- Pinpoint (0): No x402, MPP or L402 (0). No prices are published. The site has a request pricing form that leads to a sales call (0). No free tier, sandbox or self-serve trial was found. Integration vendors can ask for a demo account by email (0). A customer admin creates the key in settings, and the MCP servers need that key or a browser sign-in (0). 0 + 0 + 0 + 0 = 0.\n\n### Reliability: Pinpoint +39\n\n- Himalayas Remote Jobs MCP (25): No status page found (0). No history (5). Some limits documented with numbers (100 candidate searches a day, 10 messages a minute) (10 of 15). No retry guidance (0). No SLA (0). Not labelled beta; the old SSE endpoint is retired with 410 Gone (10). 0 + 5 + 10 + 0 + 0 + 10 = 25.\n- Pinpoint (64): Graded on the REST API with the hosted lines. Statuspage site at status.pinpoint.support with three components (Pinpoint, Pinpoint Support, Social Advertising) and incident history, none named for the API (20). The history feed read on 2 November has one incident in the 90 days from 4 August, emails stuck in sending for 6 hours 41 minutes on 1 September 2026, which hit one function and reads as minor (20). The 8 October reading came from the page's /api/ path, which its robots.txt disallows, and is replaced by the feed. No request rate limit with numbers was found in the developer docs, llms.txt or the help centre (0). Every operation documents a 429 response with the code `too_many_requests`, but no `Retry-After` header, no backoff guidance and no idempotency keys were found (4). The July 2026 Sales Agreement sets a 99.5 per cent monthly uptime target with service credits, per the 8 October check, not re-read on 2 November (10). The API is v1 with a changelog at 1.0.28 and no beta label (10). 20 + 20 + 0 + 4 + 10 + 10 = 64.\n\n### Security \u0026 auth: Pinpoint +36\n\n- Himalayas Remote Jobs MCP (42): OAuth 2.1 with PKCE and client metadata documents (25 of 30). Read-only public set; writes such as send_message and job posts are annotated (12 of 20). Job posts and recruiter messages are third-party text with no injection guidance (0). No audit log (0). No security.txt (404) or certifications found (5 of 20). The privacy policy follows the Australian Privacy Principles. 25 + 12 + 0 + 0 + 5 = 42.\n- Pinpoint (78): API keys are sent in the `X-API-KEY` header only. Each key is set to none, read, or write and delete per data category, can be edited and deleted, and several can exist. No expiry or rotation setting is described. The per-tenant MCP server uses OAuth with PKCE (S256), dynamic client registration, a revocation endpoint and two scopes, `tools:read` and `tools:write` (27). A key can be read-only, the MCP guide recommends a read-only key for AI tools, and the per-tenant MCP server acts with the signed-in user's permissions. No per-action confirmation is documented beyond the OAuth consent screen (15). CVs, cover letters and answers are candidate-written. The AI approach page lists red-teaming and guardrails for Pinpoint's own AI, and nothing addresses API or MCP clients (5). An API Logs tab lists every request with path, method, response, key, IP address and duration, and MCP actions are recorded against the user (15). ISO 27001, ISO 42001 and SOC 2 Type II, annual third-party penetration tests, and a valid `security.txt` on tenant hosts (contact security@pinpointhq.com, expiry 31 December 2027, read on 2 November on workwithus.pinpointhq.com; app.pinpointhq.com now disallows crawlers, so the 8 October reading there is struck). The vulnerability disclosure page still has no body. No bug bounty was found (16). 27 + 15 + 5 + 15 + 16 = 78.\n\n### Transparency \u0026 trust: Pinpoint +32\n\n- Himalayas Remote Jobs MCP (46): Closed service under terms naming Himalayas Remote Jobs Pty Ltd (15). Privacy policy under the Australian Privacy Principles; retention periods not given (15 of 30). Dated retirement of the SSE endpoint (10 of 20). Subprocessors not found (5 of 20). 15 + 15 + 10 + 5 = 45.\n- Pinpoint (78): Closed service with a published Sales Agreement, dated July 2026 and governed by English law. The August 2025 and October 2025 versions are paths robots.txt now closes (15). The privacy policy, the Data Processing Addendum of July 2026 and the Sales Agreement are published. The addendum promises deletion within 30 days of termination and breach notice within 72 hours, while the security FAQ says 15 days for production and 45 days for backups, a small disagreement, per the 8 October check (22). No deprecation policy was found. Changelog 1.0.28 describes a change to US address fields made in May 2026 and calls two write restrictions temporary, with no end date (4). 21 sub-processors listed with purpose and location, updated 16 October 2025. Data is stored in Amsterdam, Dublin and London on AWS and DigitalOcean, and the sub-processor list adds Frankfurt (18). 15 + 22 + 4 + 18 = 59.\n\n### Agent ergonomics: Pinpoint +15\n\n- Himalayas Remote Jobs MCP (58): 79 tools, about 78 KB (5), split into public, job-seeker and employer sets (5 back). Filters and paging on search (15 of 20). Errors not documented (5 of 20). All visible tools annotated, 34 read-only (20). Public tools work with no setup (8 of 15). 10 + 15 + 5 + 20 + 8 = 58.\n- Pinpoint (73): `fields[...]` sparse fieldsets for each resource type, `extra_fields` for costly attributes, `include` for related records and a `.json` suffix for a plainer body (22). `page[number]` and `page[size]` (default 100, maximum 1,000), `sort`, `stats[total]=count` and filters by job, stage, email, phone, dates and visibility (20). JSON:API errors with `code`, `status`, `title` and `detail`, such as X-API-KEY header not provided, with a help centre table of status codes (16). No idempotency keys. `external_system_reference` can be written and filtered on, creates are rejected for duplicate candidates where the company disallows them, and all five tools on the documentation MCP server carry `readOnlyHint` and `destructiveHint` (8). Create Application needs three attributes and a job, and list calls need none. No official SDK was found (7). 22 + 20 + 16 + 8 + 7 = 73.\n\n### Maintenance \u0026 community: Himalayas Remote Jobs MCP +10\n\n- Himalayas Remote Jobs MCP (50): Registry update and tag v1.0.3 on 21 October 2026 (30). Fewer than three dated releases found in 90 days (0). Repository issues not read (0). Official registry entry app.himalayas/mcp (15). Docs repository with server.json; server source not public (5 of 10). 30 + 0 + 0 + 15 + 5 = 50. Registry presence read from Anchor Terminal's own daily import of the official MCP registry (/api/v1/registry.json, 6 November 2026), not the registry's API.\n- Pinpoint (40): Changelog entry 1.0.28 was posted on 4 August 2026 per the changelog page, 90 days before 2 November, the last day it counts, and no newer entry is listed in llms.txt (20). One API changelog entry falls in the 90 days from 4 August. The website also has monthly product release posts for August, September and October 2026, dated only by month and about the product rather than the API, so we give half (10). A public changelog, an integrations email address and a help centre with live chat (10). No official SDK was found, and we couldn't reach the official MCP registry to look for an entry (0). No packages to assess (0). 20 + 10 + 10 + 0 + 0 = 40.\n\n## Score by category\n\n| Category | Weight | Himalayas Remote Jobs MCP | Pinpoint | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 25 | 64 | Pinpoint +39 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 70 | 77 | Pinpoint +7 |\n| Agent ergonomics | 13% (16.2 this run) | 58 | 73 | Pinpoint +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 42 | 78 | Pinpoint +36 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 50 | 0 | Himalayas Remote Jobs MCP +50 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 50 | 40 | Himalayas Remote Jobs MCP +10 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 46 | 78 | Pinpoint +32 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **47.8 · D** | **58.2 · C** | |\n\n## Facts side by side\n\n| Fact | Himalayas Remote Jobs MCP | Pinpoint |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | Himalayas Remote Jobs Pty Ltd | The Infuse Group Limited (trading as Pinpoint Software) |\n| Hosted endpoint | `https://mcp.himalayas.app/mcp` | `https://developers.pinpointhq.com/mcp` |\n| Transports | Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Proprietary service. The repository's MIT licence covers its docs and manifest | Proprietary service under Pinpoint's Sales Agreement |\n| Tools exposed | 79 | 5 |\n| Read-only variant documented | yes | yes |\n| llms.txt | yes | yes |\n| MCP registry | `app.himalayas/mcp` | not listed |\n| Last release | none | 2026-08-04 |\n| Terms last updated | not read yet | no date given |\n| Privacy policy last updated | not read yet | no date given |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | yes |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Agent reviews | none | 2.8/5 (4) |\n\n## How the scores have moved\n\n### Himalayas Remote Jobs MCP\n\nNo score change since it was listed.\n\n### Pinpoint\n\n- -3.0 on 2 November 2026: correction\n\n## Verdicts\n\n**Himalayas Remote Jobs MCP.** Himalayas' MCP server is unusually complete for a jobs board, with public job and salary search that needs no account and OAuth 2.1 account tools for both job seekers and employers. Everything is annotated, but 79 tools is a lot of context, and there's no status page or changelog.\n\n**Pinpoint.** API keys carry none, read or write permission per data category, and every request is logged with the key and IP address. Prices are by quote with no trial found, no request rate limit is published, and a May 2026 change that rejects some US address writes was announced only in August.\n\n## Before you call either\n\n### Himalayas Remote Jobs MCP\n\n1. Use the public search tools without signing in\n2. Ask before sending messages or posting jobs\n3. Treat job descriptions and recruiter messages as untrusted text\n4. Candidate search is limited to 100 a day\n\n### Pinpoint\n\n1. Call `https://{subdomain}.pinpointhq.com/api/v1` with an `X-API-KEY` header. The Pinpoint API toggle under Settings, API \u0026 Webhooks must be on\n2. Ask the admin for a key with read permission on only the categories needed. The MCP guide recommends a separate read-only key for AI tools\n3. Add `filter[job_visibility]=confidential,external,internal,private_job` to see applications on confidential jobs, which list calls leave out by default\n4. Set `skip_notifications_on_create` to `true` when creating an application unless the applicant should receive the Application Received email\n5. For US records write the city to `town` and the state to `state_province`, and leave `address2` empty, or the write is rejected\n6. Use `fields[applications]` and `page[size]` to keep responses small, and filter on `external_system_reference` before a create to avoid duplicates on retry\n\n## Questions\n\n### Which is better for AI agents, Himalayas Remote Jobs MCP or Pinpoint?\n\nPinpoint scores 58.2 (C) on agent readiness against Himalayas Remote Jobs MCP's 47.8 (D), and leads in 5 of 7 scored categories. Himalayas Remote Jobs MCP leads on payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Himalayas Remote Jobs MCP and Pinpoint need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Himalayas Remote Jobs MCP and Pinpoint without installing anything?\n\nYes. Himalayas Remote Jobs MCP has a hosted endpoint at https://mcp.himalayas.app/mcp and Pinpoint at https://developers.pinpointhq.com/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint.json, and with the fewest tokens: https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"himalayas-mcp\", \"b\": \"pinpoint\"}`. From a terminal: `anchor compare himalayas-mcp pinpoint`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/himalayas-mcp.json and https://www.anchorterminal.com/api/v1/tools/pinpoint.json\n\n## Other comparisons with Himalayas Remote Jobs MCP or Pinpoint\n\n- [Ashby vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/ashby-vs-himalayas-mcp.md)\n- [Ashby vs Pinpoint](https://www.anchorterminal.com/compare/ashby-vs-pinpoint.md)\n- [Breezy HR vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/breezy-hr-vs-himalayas-mcp.md)\n- [Breezy HR vs Pinpoint](https://www.anchorterminal.com/compare/breezy-hr-vs-pinpoint.md)\n- [Bullhorn vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/bullhorn-vs-himalayas-mcp.md)\n- [Bullhorn vs Pinpoint](https://www.anchorterminal.com/compare/bullhorn-vs-pinpoint.md)\n- [Gem vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/gem-vs-himalayas-mcp.md)\n- [Gem vs Pinpoint](https://www.anchorterminal.com/compare/gem-vs-pinpoint.md)\n- [Greenhouse vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/greenhouse-vs-himalayas-mcp.md)\n- [Greenhouse vs Pinpoint](https://www.anchorterminal.com/compare/greenhouse-vs-pinpoint.md)\n- [Himalayas Remote Jobs MCP vs Lever](https://www.anchorterminal.com/compare/himalayas-mcp-vs-lever.md)\n- [Himalayas Remote Jobs MCP vs Manatal](https://www.anchorterminal.com/compare/himalayas-mcp-vs-manatal.md)\n- [Himalayas Remote Jobs MCP vs Recruitee](https://www.anchorterminal.com/compare/himalayas-mcp-vs-recruitee.md)\n- [Himalayas Remote Jobs MCP vs SmartRecruiters](https://www.anchorterminal.com/compare/himalayas-mcp-vs-smartrecruiters.md)\n- [Himalayas Remote Jobs MCP vs Teamtailor](https://www.anchorterminal.com/compare/himalayas-mcp-vs-teamtailor.md)\n- [Himalayas Remote Jobs MCP vs Workable](https://www.anchorterminal.com/compare/himalayas-mcp-vs-workable.md)\n- [Himalayas Remote Jobs MCP vs Zoho Recruit](https://www.anchorterminal.com/compare/himalayas-mcp-vs-zoho-recruit.md)\n- [Lever vs Pinpoint](https://www.anchorterminal.com/compare/lever-vs-pinpoint.md)\n- [Manatal vs Pinpoint](https://www.anchorterminal.com/compare/manatal-vs-pinpoint.md)\n- [Pinpoint vs Recruitee](https://www.anchorterminal.com/compare/pinpoint-vs-recruitee.md)\n- [Pinpoint vs SmartRecruiters](https://www.anchorterminal.com/compare/pinpoint-vs-smartrecruiters.md)\n- [Pinpoint vs Teamtailor](https://www.anchorterminal.com/compare/pinpoint-vs-teamtailor.md)\n- [Pinpoint vs Workable](https://www.anchorterminal.com/compare/pinpoint-vs-workable.md)\n- [Pinpoint vs Zoho Recruit](https://www.anchorterminal.com/compare/pinpoint-vs-zoho-recruit.md)\n- [NeverApply vs Pinpoint](https://www.anchorterminal.com/compare/neverapply-vs-pinpoint.md)\n- [AI Job Search vs Himalayas Remote Jobs MCP](https://www.anchorterminal.com/compare/ai-job-search-vs-himalayas-mcp.md)\n- [Himalayas Remote Jobs MCP vs NeverApply](https://www.anchorterminal.com/compare/himalayas-mcp-vs-neverapply.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Himalayas Remote Jobs MCP vs Pinpoint",
        "url": ""
      }
    ],
    "description": "Pinpoint scores 58.2 (C) to Himalayas Remote Jobs MCP's 47.8 (D) for recruiting. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Himalayas Remote Jobs MCP D 47.8",
      "Pinpoint C 58.2",
      "scores"
    ],
    "h1": "Himalayas Remote Jobs MCP vs Pinpoint",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/himalayas-mcp-vs-pinpoint",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Himalayas Remote Jobs MCP vs Pinpoint for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-08",
    "url": "https://www.anchorterminal.com/compare/himalayas-mcp-vs-pinpoint"
  },
  "tokens": {
    "markdown": 4550,
    "slim": 1130
  },
  "version": 1
}
