Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 2 min ago
teppi

Server definition

Hash
sha256:392d7cbe37090724b2d9d159559a26431dcfd9e757b59b2b6cd280e1217a9bec
What it is
What a remote MCP server returned when asked what it offers: 19 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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.", "type": "string" }, "body": { "description": "Article body in the format selected by content_format", "minLength": 1, "type": "string" }, "category_id": { "description": "Category ID; defaults to the site's default news category", "type": "integer" }, "content_format": { "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.", "enum": [ "html", "markdown" ], "type": "string" }, "locale": { "description": "2-letter locale code to publish directly into (e.g. \"en\", \"de\") — no English-first requirement, unlike draft_news", "type": "string" }, "published": { "description": "Whether the article goes live immediately. Defaults to true. No safety classifier runs either way — admin judgment only.", "type": "boolean" }, "target_locales": { "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.", "items": { "type": "string" }, "maxItems": 23, "type": "array" }, "title": { "description": "Article title, in the target locale", "minLength": 1, "type": "string" }, "translate_to_all": { "description": "When true, queue every missing locale after creating the article. The tool returns immediately; use admin_get_news_translation_status to follow progress.", "type": "boolean" } }, "required": [ "title", "body", "locale" ], "type": "object" }, "name": "admin_create_news", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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.", "type": "string" }, "body": { "description": "New body. Omit to leave unchanged.", "minLength": 1, "type": "string" }, "category_id": { "description": "New category ID. Omit to leave unchanged.", "type": "integer" }, "content_format": { "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.", "enum": [ "html", "markdown" ], "type": "string" }, "news_id": { "description": "The news_id of any existing article — not limited to ones the caller created", "type": "integer" }, "published": { "description": "Publish or unpublish the article. Omit to leave the current status unchanged.", "type": "boolean" }, "title": { "description": "New title. Omit to leave unchanged.", "minLength": 1, "type": "string" } }, "required": [ "news_id" ], "type": "object" }, "name": "admin_edit_news", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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.", "type": "string" }, "news_id": { "description": "Any news row in the translation family.", "type": "integer" } }, "required": [ "news_id" ], "type": "object" }, "name": "admin_get_news_translation_status", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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.", "type": "string" }, "news_id": { "description": "Any published news row in the translation family.", "type": "integer" }, "target_locales": { "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.", "items": { "type": "string" }, "maxItems": 23, "type": "array" } }, "required": [ "news_id" ], "type": "object" }, "name": "admin_translate_news", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "cover_letter": { "description": "Optional cover letter text", "maxLength": 5000, "type": "string" }, "job_id": { "description": "Job ID to apply for (from search_jobs or get_job)", "format": "uuid", "type": "string" }, "resume_id": { "description": "Resume to attach. If omitted, your default resume (or most recently updated) is used automatically.", "format": "uuid", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "apply_to_job", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "certificates": { "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "date": { "description": "YYYY-MM", "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "issuer": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "contact": { "additionalProperties": false, "description": "Contact links shown in the header.", "properties": { "email": { "type": "string" }, "github": { "type": "string" }, "languages": { "items": { "type": "string" }, "type": "array" }, "linkedin": { "type": "string" }, "phone": { "type": "string" }, "reddit": { "type": "string" }, "telegram": { "type": "string" }, "twitter": { "type": "string" }, "website": { "type": "string" } }, "type": "object" }, "customSections": { "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.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Omit to auto-generate.", "type": "string" }, "items": { "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "subtitle": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title" ], "type": "object" }, "type": "array" }, "title": { "description": "Section heading, e.g. \"Publications\" or \"Volunteering\".", "type": "string" } }, "required": [ "title", "items" ], "type": "object" }, "type": "array" }, "education": { "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "current": { "type": "boolean" }, "degree": { "type": "string" }, "endDate": { "description": "YYYY-MM", "type": "string" }, "field": { "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "location": { "type": "string" }, "startDate": { "description": "YYYY-MM", "type": "string" }, "university": { "type": "string" } }, "required": [ "university" ], "type": "object" }, "type": "array" }, "experiences": { "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "company": { "type": "string" }, "current": { "type": "boolean" }, "endDate": { "description": "YYYY-MM, omit/empty if current", "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "location": { "type": "string" }, "startDate": { "description": "YYYY-MM", "type": "string" }, "title": { "type": "string" } }, "required": [ "company", "title" ], "type": "object" }, "type": "array" }, "headline": { "description": "Short professional title under the name, e.g. \"Senior Software Engineer\".", "type": "string" }, "is_default": { "description": "Make this the default resume — used by apply_to_job when no resume_id is given.", "type": "boolean" }, "locale": { "description": "2-letter locale code for this resume version, e.g. \"en\", \"de\". Defaults to \"en\".", "type": "string" }, "location": { "description": "City, Country shown in the header.", "type": "string" }, "name": { "description": "Full name shown on the resume header.", "type": "string" }, "projects": { "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "endDate": { "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "link": { "type": "string" }, "location": { "type": "string" }, "name": { "type": "string" }, "remote": { "type": "boolean" }, "role": { "type": "string" }, "startDate": { "type": "string" }, "tech": { "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "skills": { "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Omit to auto-generate.", "type": "string" }, "name": { "description": "Category label, e.g. \"Programming\" or \"Backend\".", "type": "string" }, "skills": { "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "skills" ], "type": "object" }, "type": "array" }, "summary": { "description": "2-4 sentence professional summary.", "type": "string" }, "title": { "description": "Internal title to identify this resume, e.g. \"Backend Engineer — EU\". Defaults to \"Untitled Resume\".", "type": "string" } }, "type": "object" }, "name": "create_resume", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "allow_self_translation": { "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.", "type": "boolean" }, "api_key": { "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.", "type": "string" }, "body": { "description": "Article body in the format selected by content_format", "minLength": 1, "type": "string" }, "category_id": { "description": "Category ID; defaults to the site's default news category", "type": "integer" }, "content_format": { "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.", "enum": [ "html", "markdown" ], "type": "string" }, "target_locales": { "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.", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Article title (English)", "minLength": 1, "type": "string" } }, "required": [ "title", "body" ], "type": "object" }, "name": "draft_news", "outputSchema": null }, { "description": "List all content categories available on the platform (for filtering news, jobs, etc.).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "locale": { "default": 1, "description": "Language locale (1=English)", "maximum": 24, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get_categories", "outputSchema": null }, { "description": "Get full details of a job listing by its slug or ID, including description, requirements, company info, and application link.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "slug": { "description": "Job slug (URL-friendly identifier) or job ID", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_job", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "limit": { "description": "Results per page (default: 20)", "maximum": 50, "minimum": 1, "type": "integer" }, "locale": { "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.", "type": "string" }, "page": { "description": "Page number (default: 1)", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get_missing_news_translations", "outputSchema": null }, { "description": "Check the status of the authenticated user's job applications. Requires a personal access token (generate one at /app/api-keys/).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "limit": { "description": "Results per page (default: 20)", "maximum": 50, "minimum": 1, "type": "integer" }, "page": { "description": "Page number (default: 1)", "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "get_my_applications", "outputSchema": null }, { "description": "Fetch the latest news articles. Optionally filter by category, locale, or title keyword. Returns title, summary, publication date, and URL.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "category_id": { "description": "Filter by category ID", "type": "integer" }, "limit": { "default": 10, "maximum": 50, "minimum": 1, "type": "integer" }, "locale": { "default": 1, "description": "Language locale (1=English, 2=Persian, 3=Spanish, 4=German, ...)", "maximum": 24, "minimum": 1, "type": "integer" }, "offset": { "default": 0, "minimum": 0, "type": "integer" }, "title": { "description": "Search keyword in title", "type": "string" } }, "type": "object" }, "name": "get_news", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "get_platform_stats", "outputSchema": null }, { "description": "List the authenticated user's saved resumes. Requires a personal access token (generate one at /app/api-keys/).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "limit": { "description": "Results per page (default: 20)", "maximum": 50, "minimum": 1, "type": "integer" }, "locale": { "description": "Filter by resume locale", "type": "string" }, "page": { "description": "Page number (default: 1)", "minimum": 1, "type": "integer" }, "query": { "description": "Search keyword in resume title or headline", "type": "string" }, "status": { "description": "Filter by resume status", "enum": [ "draft", "published", "archived" ], "type": "string" } }, "type": "object" }, "name": "list_my_resumes", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "allow_self_translation": { "description": "Same as draft_news. Omit to leave the article's existing setting unchanged; pass explicitly to change it.", "type": "boolean" }, "api_key": { "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.", "type": "string" }, "body": { "description": "Revised article body (English)", "minLength": 1, "type": "string" }, "content_format": { "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.", "enum": [ "html", "markdown" ], "type": "string" }, "news_id": { "description": "The news_id returned by a previous draft_news call", "type": "integer" }, "target_locales": { "description": "Same as draft_news — only used if this revision is approved", "items": { "type": "string" }, "type": "array" }, "title": { "description": "Revised article title (English)", "minLength": 1, "type": "string" } }, "required": [ "news_id", "title", "body" ], "type": "object" }, "name": "resubmit_news", "outputSchema": null }, { "description": "Search companies on the platform. Returns company name, industry, location, size, website, and open roles count.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "country": { "description": "Filter by country", "type": "string" }, "industry": { "description": "Filter by industry", "type": "string" }, "is_hiring": { "description": "Filter to companies actively hiring", "type": "boolean" }, "limit": { "description": "Results per page (default: 10)", "maximum": 50, "minimum": 1, "type": "integer" }, "page": { "description": "Page number (default: 1)", "minimum": 1, "type": "integer" }, "query": { "description": "Company name or industry keyword", "type": "string" } }, "type": "object" }, "name": "search_companies", "outputSchema": null }, { "description": "Search job listings by keyword, location, type, or remote policy. Returns paginated results with title, company, salary, and application URL.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "city": { "description": "Filter by city", "type": "string" }, "country": { "description": "Filter by country (e.g. \"United States\")", "type": "string" }, "job_level": { "description": "Experience level required", "enum": [ "ENTRY", "MID", "SENIOR", "LEAD", "EXECUTIVE" ], "type": "string" }, "job_type": { "description": "Employment type", "enum": [ "FULL_TIME", "PART_TIME", "CONTRACT", "INTERNSHIP", "FREELANCE" ], "type": "string" }, "limit": { "description": "Results per page (default: 10)", "maximum": 50, "minimum": 1, "type": "integer" }, "page": { "description": "Page number (default: 1)", "minimum": 1, "type": "integer" }, "q": { "description": "Search keyword (title or description)", "type": "string" }, "remote_type": { "description": "Remote work policy", "enum": [ "REMOTE", "HYBRID", "ONSITE" ], "type": "string" }, "salary_min": { "description": "Minimum annual salary (USD)", "type": "integer" }, "skills": { "description": "Required skills (e.g. [\"Python\", \"React\"])", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "name": "search_jobs", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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.", "type": "string" }, "body": { "description": "Translated body, in the target locale — HTML or plain text, same format as the source", "minLength": 1, "type": "string" }, "content_format": { "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.", "enum": [ "html", "markdown" ], "type": "string" }, "locale": { "description": "2-letter target locale code (e.g. \"fi\") — see get_missing_news_translations for what a given article still needs", "type": "string" }, "news_id": { "description": "The news_id of the published English source article (from get_news or get_missing_news_translations)", "type": "integer" }, "title": { "description": "Translated title, in the target locale", "minLength": 1, "type": "string" } }, "required": [ "news_id", "locale", "title", "body" ], "type": "object" }, "name": "submit_news_translation", "outputSchema": null }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "api_key": { "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).", "type": "string" }, "certificates": { "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "date": { "description": "YYYY-MM", "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "issuer": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "contact": { "additionalProperties": false, "description": "Contact links shown in the header.", "properties": { "email": { "type": "string" }, "github": { "type": "string" }, "languages": { "items": { "type": "string" }, "type": "array" }, "linkedin": { "type": "string" }, "phone": { "type": "string" }, "reddit": { "type": "string" }, "telegram": { "type": "string" }, "twitter": { "type": "string" }, "website": { "type": "string" } }, "type": "object" }, "customSections": { "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.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Omit to auto-generate.", "type": "string" }, "items": { "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "subtitle": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title" ], "type": "object" }, "type": "array" }, "title": { "description": "Section heading, e.g. \"Publications\" or \"Volunteering\".", "type": "string" } }, "required": [ "title", "items" ], "type": "object" }, "type": "array" }, "education": { "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "current": { "type": "boolean" }, "degree": { "type": "string" }, "endDate": { "description": "YYYY-MM", "type": "string" }, "field": { "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "location": { "type": "string" }, "startDate": { "description": "YYYY-MM", "type": "string" }, "university": { "type": "string" } }, "required": [ "university" ], "type": "object" }, "type": "array" }, "experiences": { "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "company": { "type": "string" }, "current": { "type": "boolean" }, "endDate": { "description": "YYYY-MM, omit/empty if current", "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "location": { "type": "string" }, "startDate": { "description": "YYYY-MM", "type": "string" }, "title": { "type": "string" } }, "required": [ "company", "title" ], "type": "object" }, "type": "array" }, "full_replace": { "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.", "type": "boolean" }, "headline": { "description": "Short professional title under the name, e.g. \"Senior Software Engineer\".", "type": "string" }, "is_default": { "description": "Make this the default resume. Omit to leave unchanged.", "type": "boolean" }, "locale": { "description": "New locale code. Omit to leave unchanged.", "type": "string" }, "location": { "description": "City, Country shown in the header.", "type": "string" }, "name": { "description": "Full name shown on the resume header.", "type": "string" }, "projects": { "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "bullets": { "items": { "type": "string" }, "type": "array" }, "endDate": { "type": "string" }, "id": { "description": "Omit to auto-generate.", "type": "string" }, "link": { "type": "string" }, "location": { "type": "string" }, "name": { "type": "string" }, "remote": { "type": "boolean" }, "role": { "type": "string" }, "startDate": { "type": "string" }, "tech": { "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "resume_id": { "description": "The resume to update — from list_my_resumes.", "format": "uuid", "type": "string" }, "skills": { "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed.", "items": { "additionalProperties": false, "properties": { "id": { "description": "Omit to auto-generate.", "type": "string" }, "name": { "description": "Category label, e.g. \"Programming\" or \"Backend\".", "type": "string" }, "skills": { "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "skills" ], "type": "object" }, "type": "array" }, "status": { "description": "New status. Omit to leave unchanged.", "enum": [ "draft", "published", "archived" ], "type": "string" }, "summary": { "description": "2-4 sentence professional summary.", "type": "string" }, "title": { "description": "New internal title. Omit to leave unchanged.", "type": "string" } }, "required": [ "resume_id" ], "type": "object" }, "name": "update_resume", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:392d7cbe37090724b2d9d159559a26431dcfd9e757b59b2b6cd280e1217a9bec | sha256sum