mcp

Search and apply to real jobs, browse companies, and read tech news via Datronis's live data.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
92%
命名质量
92%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'admin_get_news_translation_status' name length outside 3-30 range在 admin_get_news_translation_status 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~7,340token 数(工具定义)
~4.0 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 5.73%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mcp": {
      "url": "https://api.datronis.com/api/mcp"
    }
  }
}

远程端点

https://api.datronis.com/api/mcpstreamable-http

它能做什么

工具清单

工具(19)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢search_jobs(q, country, city, remote_type, job_type, ...)

Search job listings by keyword, location, type, or remote policy. Returns paginated results with title, company, salary, and application URL.

输入模式

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Search keyword (title or description)"
    },
    "country": {
      "type": "string",
      "description": "Filter by country (e.g. \"United States\")"
    },
    "city": {
      "type": "string",
      "description": "Filter by city"
    },
    "remote_type": {
      "type": "string",
      "enum": [
        "REMOTE",
        "HYBRID",
        "ONSITE"
      ],
      "description": "Remote work policy"
    },
    "job_type": {
      "type": "string",
      "enum": [
        "FULL_TIME",
        "PART_TIME",
        "CONTRACT",
        "INTERNSHIP",
        "FREELANCE"
      ],
      "description": "Employment type"
    },
    "job_level": {
      "type": "string",
      "enum": [
        "ENTRY",
        "MID",
        "SENIOR",
        "LEAD",
        "EXECUTIVE"
      ],
      "description": "Experience level required"
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Required skills (e.g. [\"Python\", \"React\"])"
    },
    "salary_min": {
      "type": "integer",
      "description": "Minimum annual salary (USD)"
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default: 1)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (default: 10)"
    },
    "api_key": {
      "type": "string",
      "description": "Optional: your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Prefer sending it as an `Authorization: Bearer <token>` HTTP header instead of this argument — the header never enters the conversation/tool-call log the way this argument does. When provided (either way) and valid, results are personalized (e.g. includes whether you saved a job)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_job(slug, api_key)

Get full details of a job listing by its slug or ID, including description, requirements, company info, and application link.

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Job slug (URL-friendly identifier) or job ID"
    },
    "api_key": {
      "type": "string",
      "description": "Optional: your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Prefer sending it as an `Authorization: Bearer <token>` HTTP header instead of this argument — the header never enters the conversation/tool-call log the way this argument does. When provided (either way) and valid, results are personalized (e.g. includes whether you saved a job)."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_news(title, category_id, locale, limit, offset)

Fetch the latest news articles. Optionally filter by category, locale, or title keyword. Returns title, summary, publication date, and URL.

输入模式

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Search keyword in title"
    },
    "category_id": {
      "type": "integer",
      "description": "Filter by category ID"
    },
    "locale": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "default": 1,
      "description": "Language locale (1=English, 2=Persian, 3=Spanish, 4=German, ...)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_categories(locale)

List all content categories available on the platform (for filtering news, jobs, etc.).

输入模式

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "default": 1,
      "description": "Language locale (1=English)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_companies(query, country, industry, is_hiring, limit, ...)

Search companies on the platform. Returns company name, industry, location, size, website, and open roles count.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Company name or industry keyword"
    },
    "country": {
      "type": "string",
      "description": "Filter by country"
    },
    "industry": {
      "type": "string",
      "description": "Filter by industry"
    },
    "is_hiring": {
      "type": "boolean",
      "description": "Filter to companies actively hiring"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (default: 10)"
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default: 1)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_platform_stats

Get high-level statistics about the Datronis platform: total active jobs, jobs indexed in the last 7 days, companies, countries represented, news articles, and users.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴apply_to_job(api_key, job_id, resume_id, cover_letter)

Submit a job application on behalf of the authenticated user. Requires a personal access token (generate one at /app/api-keys/). A resume is mandatory: if no resume_id is given, the user's default (or most recently updated) resume is used automatically, and the call fails with a clear error if the user has no resume yet.

输入模式

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why)."
    },
    "job_id": {
      "type": "string",
      "format": "uuid",
      "description": "Job ID to apply for (from search_jobs or get_job)"
    },
    "resume_id": {
      "type": "string",
      "format": "uuid",
      "description": "Resume to attach. If omitted, your default resume (or most recently updated) is used automatically."
    },
    "cover_letter": {
      "type": "string",
      "maxLength": 5000,
      "description": "Optional cover letter text"
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_my_resumes(api_key, query, status, locale, page, ...)

List the authenticated user's saved resumes. Requires a personal access token (generate one at /app/api-keys/).

输入模式

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why)."
    },
    "query": {
      "type": "string",
      "description": "Search keyword in resume title or headline"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "published",
        "archived"
      ],
      "description": "Filter by resume status"
    },
    "locale": {
      "type": "string",
      "description": "Filter by resume locale"
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default: 1)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (default: 20)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_my_applications(api_key, page, limit)

Check the status of the authenticated user's job applications. Requires a personal access token (generate one at /app/api-keys/).

输入模式

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why)."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default: 1)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (default: 20)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡draft_news(title, body, content_format, category_id, target_locales, ...)

Draft and publish a news article. Open to anyone with a Datronis account — the personal access token is for rate-limiting and audit, not permission-gating. Always drafted in English first; an automated safety classifier must return "green" (not political, not likely to be seen as controversial or divisive) before the article goes live. A "flagged" result creates the article unpublished and returns the reasons — use resubmit_news with revised content to try again; there is no way to force-publish a flagged article. Publishes English-only unless target_locales is given.

输入模式

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Article title (English)"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Article body in the format selected by content_format"
    },
    "content_format": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Body format. Use \"markdown\" for headings, tables, lists, code blocks, links and images; use \"html\" for rich HTML with classes and inline CSS. Defaults to html for backward compatibility."
    },
    "category_id": {
      "type": "integer",
      "description": "Category ID; defaults to the site's default news category"
    },
    "target_locales": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional 2-letter locale codes to also translate and publish into (e.g. [\"de\",\"ru\"]). English is always published first. Omit to publish English-only — broad multi-language publishing is only ever done when explicitly requested. There is no limit on how many locales may be requested here."
    },
    "allow_self_translation": {
      "type": "boolean",
      "description": "Reserves (does not yet grant a UI for) your permission to personally translate this article into additional locales later, beyond target_locales. Defaults to true — checked by default. Only ever applies to a locale after the English original has been classified \"green\"; a \"flagged\" article carries no translation permission regardless of this flag."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). Publishing is open to anyone with an account — this token exists for rate-limiting and an audit trail, not to gate who may publish."
    }
  },
  "required": [
    "title",
    "body"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪resubmit_news(news_id, title, body, content_format, target_locales, ...)

Revise and reclassify a news article that draft_news (or a previous resubmit_news call) rejected as "flagged". Every call is its own fully logged classification attempt against the news_id's audit trail — never a silent status flip. Publishes the revision live only if the classifier now returns "green". Only the account that originally submitted the article (via draft_news) may resubmit it — a different account's api_key is rejected, even a valid one.

输入模式

{
  "type": "object",
  "properties": {
    "news_id": {
      "type": "integer",
      "description": "The news_id returned by a previous draft_news call"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Revised article title (English)"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Revised article body (English)"
    },
    "content_format": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Body format. Use \"markdown\" for headings, tables, lists, code blocks, links and images; use \"html\" for rich HTML with classes and inline CSS. Defaults to html for backward compatibility."
    },
    "target_locales": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Same as draft_news — only used if this revision is approved"
    },
    "allow_self_translation": {
      "type": "boolean",
      "description": "Same as draft_news. Omit to leave the article's existing setting unchanged; pass explicitly to change it."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). Publishing is open to anyone with an account — this token exists for rate-limiting and an audit trail, not to gate who may publish."
    }
  },
  "required": [
    "news_id",
    "title",
    "body"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡get_missing_news_translations(locale, page, limit)

List published English news articles and which locale codes they are still missing a translation for. Pass locale to focus on one language at a time. Use this to find work for submit_news_translation — this tool only reports gaps, it never translates anything itself.

输入模式

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Optional 2-letter locale code (e.g. \"fi\") to only return articles missing that specific translation. Omit to see every published article missing at least one locale."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "Page number (default: 1)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Results per page (default: 20)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡submit_news_translation(news_id, locale, title, body, content_format, ...)

Publish your own translation of an already-published English article into a new locale. Unlike draft_news's target_locales (which asks Datronis's own server to translate it), the translated title/body you pass here is published as-is — you (the calling AI) do the translation. Open to anyone with an account, same as draft_news; the source article must already be live, and only one translation may exist per (article, locale) — a locale that already has a translation is rejected, use get_missing_news_translations to find real gaps first.

输入模式

{
  "type": "object",
  "properties": {
    "news_id": {
      "type": "integer",
      "description": "The news_id of the published English source article (from get_news or get_missing_news_translations)"
    },
    "locale": {
      "type": "string",
      "description": "2-letter target locale code (e.g. \"fi\") — see get_missing_news_translations for what a given article still needs"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Translated title, in the target locale"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Translated body, in the target locale — HTML or plain text, same format as the source"
    },
    "content_format": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Body format. Use \"markdown\" for headings, tables, lists, code blocks, links and images; use \"html\" for rich HTML with classes and inline CSS. Defaults to html for backward compatibility."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). Publishing is open to anyone with an account — this token exists for rate-limiting and an audit trail, not to gate who may publish."
    }
  },
  "required": [
    "news_id",
    "locale",
    "title",
    "body"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡admin_create_news(title, body, content_format, locale, category_id, ...)

Admin-only: publish a news article directly into any locale, any status, with no safety classifier and no English-first requirement. Requires an api_key belonging to an admin account — a valid but non-admin key is rejected. For non-admin accounts, use draft_news instead. Can also queue selected translations or every missing locale without keeping the MCP request open while translation runs.

输入模式

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "Article title, in the target locale"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Article body in the format selected by content_format"
    },
    "content_format": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Body format. Use \"markdown\" for headings, tables, lists, code blocks, links and images; use \"html\" for rich HTML with classes and inline CSS. Defaults to html for backward compatibility."
    },
    "locale": {
      "type": "string",
      "description": "2-letter locale code to publish directly into (e.g. \"en\", \"de\") — no English-first requirement, unlike draft_news"
    },
    "category_id": {
      "type": "integer",
      "description": "Category ID; defaults to the site's default news category"
    },
    "published": {
      "type": "boolean",
      "description": "Whether the article goes live immediately. Defaults to true. No safety classifier runs either way — admin judgment only."
    },
    "target_locales": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 23,
      "description": "Optional locale codes to translate in the durable background queue after creating the article. Use translate_to_all instead when every missing locale is wanted."
    },
    "translate_to_all": {
      "type": "boolean",
      "description": "When true, queue every missing locale after creating the article. The tool returns immediately; use admin_get_news_translation_status to follow progress."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). The token must belong to an admin account — a valid but non-admin key is rejected."
    }
  },
  "required": [
    "title",
    "body",
    "locale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴admin_edit_news(news_id, title, body, content_format, category_id, ...)

Admin-only: edit any existing news article — title, body, category, or published status — regardless of who created it or what locale it is in. Requires an api_key belonging to an admin account. Unlike resubmit_news, there is no ownership restriction and no safety classifier; omit a field to leave it unchanged.

输入模式

{
  "type": "object",
  "properties": {
    "news_id": {
      "type": "integer",
      "description": "The news_id of any existing article — not limited to ones the caller created"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "New title. Omit to leave unchanged."
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "New body. Omit to leave unchanged."
    },
    "content_format": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Body format. Use \"markdown\" for headings, tables, lists, code blocks, links and images; use \"html\" for rich HTML with classes and inline CSS. Defaults to html for backward compatibility."
    },
    "category_id": {
      "type": "integer",
      "description": "New category ID. Omit to leave unchanged."
    },
    "published": {
      "type": "boolean",
      "description": "Publish or unpublish the article. Omit to leave the current status unchanged."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). The token must belong to an admin account — a valid but non-admin key is rejected."
    }
  },
  "required": [
    "news_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢admin_translate_news(news_id, target_locales, api_key)

Admin-only: durably queue server-generated translations for an existing published news article. Pass target_locales for selected languages, or omit it to fill every missing locale across all 24 supported languages. Existing translations are skipped and each locale has a deterministic task, so repeating the call is safe. This call returns quickly; use admin_get_news_translation_status until complete=true.

输入模式

{
  "type": "object",
  "properties": {
    "news_id": {
      "type": "integer",
      "description": "Any published news row in the translation family."
    },
    "target_locales": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 23,
      "description": "Locale codes to fill (for example [\"fa\",\"de\"]). Omit to queue every locale that is still missing. Existing translations are skipped, so retries are safe."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). The token must belong to an admin account — a valid but non-admin key is rejected."
    }
  },
  "required": [
    "news_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢admin_get_news_translation_status(news_id, api_key)

Admin-only: inspect translation coverage and durable queue state for a news article. Returns existing locale rows, missing locale codes, per-locale QUEUED/PROCESSING/COMPLETED/FAILED jobs, and complete=true only when all 24 languages exist.

输入模式

{
  "type": "object",
  "properties": {
    "news_id": {
      "type": "integer",
      "description": "Any news row in the translation family."
    },
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why). The token must belong to an admin account — a valid but non-admin key is rejected."
    }
  },
  "required": [
    "news_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_resume(api_key, title, locale, is_default, name, ...)

Create a new resume for the authenticated user by directly specifying its content — name, headline, summary, contact info, work experience, education, skills, projects, certificates. Unlike the human resume builder at /app/resume-builder/, this tool skips layout and styling entirely — Datronis applies sensible defaults, which the user can still adjust later in the builder without losing anything you wrote. Requires a personal access token.

输入模式

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why)."
    },
    "title": {
      "type": "string",
      "description": "Internal title to identify this resume, e.g. \"Backend Engineer — EU\". Defaults to \"Untitled Resume\"."
    },
    "locale": {
      "type": "string",
      "description": "2-letter locale code for this resume version, e.g. \"en\", \"de\". Defaults to \"en\"."
    },
    "is_default": {
      "type": "boolean",
      "description": "Make this the default resume — used by apply_to_job when no resume_id is given."
    },
    "name": {
      "type": "string",
      "description": "Full name shown on the resume header."
    },
    "headline": {
      "type": "string",
      "description": "Short professional title under the name, e.g. \"Senior Software Engineer\"."
    },
    "summary": {
      "type": "string",
      "description": "2-4 sentence professional summary."
    },
    "location": {
      "type": "string",
      "description": "City, Country shown in the header."
    },
    "contact": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "website": {
          "type": "string"
        },
        "linkedin": {
          "type": "string"
        },
        "github": {
          "type": "string"
        },
        "twitter": {
          "type": "string"
        },
        "reddit": {
          "type": "string"
        },
        "telegram": {
          "type": "string"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "description": "Contact links shown in the header."
    },
    "experiences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "company": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM, omit/empty if current"
          },
          "current": {
            "type": "boolean"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "company",
          "title"
        ],
        "additionalProperties": false
      },
      "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "remote": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tech": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string",
            "description": "Category label, e.g. \"Programming\" or \"Backend\"."
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "skills"
        ],
        "additionalProperties": false
      },
      "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "certificates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "description": "YYYY-MM"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "university": {
            "type": "string"
          },
          "degree": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "current": {
            "type": "boolean"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "university"
        ],
        "additionalProperties": false
      },
      "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "customSections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "title": {
            "type": "string",
            "description": "Section heading, e.g. \"Publications\" or \"Volunteering\"."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Omit to auto-generate."
                },
                "title": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "bullets": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "title"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "title",
          "items"
        ],
        "additionalProperties": false
      },
      "description": "Extra named sections not covered above (awards, publications, volunteering, etc). If provided, replaces this entire section — send the complete list, not just what changed."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_resume(api_key, resume_id, title, locale, status, ...)

Update an existing resume's content and/or metadata (title, locale, status, default flag). By default this merges: fields you omit stay as they are, and any section array you DO send (experiences, education, skills, projects, certificates, customSections) replaces that one section while every other section is untouched — call list_my_resumes first if you need to see current content before adding to it (e.g. appending one job to an existing experience list). Requires a personal access token.

输入模式

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your Datronis personal access token (starts with \"dtk_\"). Generate one at /app/api-keys/. Required unless sent as an `Authorization: Bearer <token>` HTTP header instead (preferred — see search_jobs' api_key description for why)."
    },
    "resume_id": {
      "type": "string",
      "format": "uuid",
      "description": "The resume to update — from list_my_resumes."
    },
    "title": {
      "type": "string",
      "description": "New internal title. Omit to leave unchanged."
    },
    "locale": {
      "type": "string",
      "description": "New locale code. Omit to leave unchanged."
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "published",
        "archived"
      ],
      "description": "New status. Omit to leave unchanged."
    },
    "is_default": {
      "type": "boolean",
      "description": "Make this the default resume. Omit to leave unchanged."
    },
    "full_replace": {
      "type": "boolean",
      "description": "false (default): merge — fields you omit stay as they are; any section array you DO send (experiences, education, skills, projects, certificates, customSections) replaces that one section, other sections are untouched. true: the content fields you send become the ENTIRE resume — any section you omit is removed. Call list_my_resumes first to see current content before adding to an existing section."
    },
    "name": {
      "type": "string",
      "description": "Full name shown on the resume header."
    },
    "headline": {
      "type": "string",
      "description": "Short professional title under the name, e.g. \"Senior Software Engineer\"."
    },
    "summary": {
      "type": "string",
      "description": "2-4 sentence professional summary."
    },
    "location": {
      "type": "string",
      "description": "City, Country shown in the header."
    },
    "contact": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "website": {
          "type": "string"
        },
        "linkedin": {
          "type": "string"
        },
        "github": {
          "type": "string"
        },
        "twitter": {
          "type": "string"
        },
        "reddit": {
          "type": "string"
        },
        "telegram": {
          "type": "string"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "description": "Contact links shown in the header."
    },
    "experiences": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "company": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM, omit/empty if current"
          },
          "current": {
            "type": "boolean"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "company",
          "title"
        ],
        "additionalProperties": false
      },
      "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "link": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "remote": {
            "type": "boolean"
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tech": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string",
            "description": "Category label, e.g. \"Programming\" or \"Backend\"."
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "name",
          "skills"
        ],
        "additionalProperties": false
      },
      "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "certificates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "name": {
            "type": "string"
          },
          "issuer": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "description": "YYYY-MM"
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "education": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "university": {
            "type": "string"
          },
          "degree": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM"
          },
          "current": {
            "type": "boolean"
          },
          "bullets": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "university"
        ],
        "additionalProperties": false
      },
      "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed."
    },
    "customSections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Omit to auto-generate."
          },
          "title": {
            "type": "string",
            "description": "Section heading, e.g. \"Publications\" or \"Volunteering\"."
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Omit to auto-generate."
                },
                "title": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "bullets": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "title"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "title",
          "items"
        ],
        "additionalProperties": false
      },
      "description": "Extra named sections not covered above (awards, publications, volunteering, etc). If provided, replaces this entire section — send the complete list, not just what changed."
    }
  },
  "required": [
    "resume_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本19 个工具
已验证未记录版本19 个工具