_ registry / mcp http-sse · checked 2h ago

Datronis

https://api.datronis.com

Registry code: face9a7e25033804

api record

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

from a public catalogue that lists it, not from the operator

endpoint
https://api.datronis.com/api/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is Datronis live?
Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
Is Datronis free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does Datronis have?
19 tools: draft_news, resubmit_news, admin_edit_news, create_resume, apply_to_job, search_companies, get_job, submit_news_translation, ….
Is Datronis safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 98.9%· all time 98.9%

latency
276ms

last good check

priced tools
0

of 19 tools

_ answered our checks, 90 days 459 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • search job listings
  • apply to a job
  • create and update a resume
  • search companies
  • read tech news
takes → gives
text → data
tools
10 reads9 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 19 tools
5 open2 auth-required 12 never probed 7 of 19 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • search_jobs reads open 22h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "q": {
          "type": "string",
          "description": "Search keyword (title or description)"
        },
        "city": {
          "type": "string",
          "description": "Filter by city"
        },
        "page": {
          "type": "integer",
          "minimum": 1,
          "description": "Page number (default: 1)"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default: 10)"
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Required skills (e.g. [\"Python\", \"React\"])"
        },
        "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)."
        },
        "country": {
          "type": "string",
          "description": "Filter by country (e.g. \"United States\")"
        },
        "job_type": {
          "enum": [
            "FULL_TIME",
            "PART_TIME",
            "CONTRACT",
            "INTERNSHIP",
            "FREELANCE"
          ],
          "type": "string",
          "description": "Employment type"
        },
        "job_level": {
          "enum": [
            "ENTRY",
            "MID",
            "SENIOR",
            "LEAD",
            "EXECUTIVE"
          ],
          "type": "string",
          "description": "Experience level required"
        },
        "salary_min": {
          "type": "integer",
          "description": "Minimum annual salary (USD)"
        },
        "remote_type": {
          "enum": [
            "REMOTE",
            "HYBRID",
            "ONSITE"
          ],
          "type": "string",
          "description": "Remote work policy"
        }
      },
      "additionalProperties": false
    }
    arguments 76 lines
  • get_missing_news_translations reads open 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "page": {
          "type": "integer",
          "minimum": 1,
          "description": "Page number (default: 1)"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default: 20)"
        },
        "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."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • get_news reads open 15h ago

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

    mcp-tool

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

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_categories reads open 2h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "locale": {
          "type": "integer",
          "default": 1,
          "maximum": 24,
          "minimum": 1,
          "description": "Language locale (1=English)"
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • get_my_applications reads auth-required 15h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "page": {
          "type": "integer",
          "minimum": 1,
          "description": "Page number (default: 1)"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default: 20)"
        },
        "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)."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • list_my_resumes reads auth-required 2h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "page": {
          "type": "integer",
          "minimum": 1,
          "description": "Page number (default: 1)"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default: 20)"
        },
        "query": {
          "type": "string",
          "description": "Search keyword in resume title or headline"
        },
        "locale": {
          "type": "string",
          "description": "Filter by resume locale"
        },
        "status": {
          "enum": [
            "draft",
            "published",
            "archived"
          ],
          "type": "string",
          "description": "Filter by resume status"
        },
        "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)."
        }
      },
      "additionalProperties": false
    }
    arguments 39 lines
  • draft_news changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "title",
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "minLength": 1,
          "description": "Article body in the format selected by content_format"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Article title (English)"
        },
        "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."
        },
        "category_id": {
          "type": "integer",
          "description": "Category ID; defaults to the site's default news category"
        },
        "content_format": {
          "enum": [
            "html",
            "markdown"
          ],
          "type": "string",
          "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": "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."
        }
      },
      "additionalProperties": false
    }
    arguments 49 lines
  • resubmit_news changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "news_id",
        "title",
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "minLength": 1,
          "description": "Revised article body (English)"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Revised article title (English)"
        },
        "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."
        },
        "news_id": {
          "type": "integer",
          "description": "The news_id returned by a previous draft_news call"
        },
        "content_format": {
          "enum": [
            "html",
            "markdown"
          ],
          "type": "string",
          "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."
        }
      },
      "additionalProperties": false
    }
    arguments 50 lines
  • admin_edit_news changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "news_id"
      ],
      "properties": {
        "body": {
          "type": "string",
          "minLength": 1,
          "description": "New body. Omit to leave unchanged."
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "New title. Omit to leave 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."
        },
        "news_id": {
          "type": "integer",
          "description": "The news_id of any existing article — not limited to ones the caller created"
        },
        "published": {
          "type": "boolean",
          "description": "Publish or unpublish the article. Omit to leave the current status unchanged."
        },
        "category_id": {
          "type": "integer",
          "description": "New category ID. Omit to leave unchanged."
        },
        "content_format": {
          "enum": [
            "html",
            "markdown"
          ],
          "type": "string",
          "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."
        }
      },
      "additionalProperties": false
    }
    arguments 45 lines
  • create_resume changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name shown on the resume header."
        },
        "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\"."
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "skills"
            ],
            "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"
                }
              }
            },
            "additionalProperties": false
          },
          "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "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)."
        },
        "contact": {
          "type": "object",
          "properties": {
            "email": {
              "type": "string"
            },
            "phone": {
              "type": "string"
            },
            "github": {
              "type": "string"
            },
            "reddit": {
              "type": "string"
            },
            "twitter": {
              "type": "string"
            },
            "website": {
              "type": "string"
            },
            "linkedin": {
              "type": "string"
            },
            "telegram": {
              "type": "string"
            },
            "languages": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "description": "Contact links shown in the header.",
          "additionalProperties": false
        },
        "summary": {
          "type": "string",
          "description": "2-4 sentence professional summary."
        },
        "headline": {
          "type": "string",
          "description": "Short professional title under the name, e.g. \"Senior Software Engineer\"."
        },
        "location": {
          "type": "string",
          "description": "City, Country shown in the header."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "link": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "role": {
                "type": "string"
              },
              "tech": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "remote": {
                "type": "boolean"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "endDate": {
                "type": "string"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "education": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "university"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "field": {
                "type": "string"
              },
              "degree": {
                "type": "string"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "current": {
                "type": "boolean"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "university": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "is_default": {
          "type": "boolean",
          "description": "Make this the default resume — used by apply_to_job when no resume_id is given."
        },
        "experiences": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "company",
              "title"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "title": {
                "type": "string"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "company": {
                "type": "string"
              },
              "current": {
                "type": "boolean"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM, omit/empty if current"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string",
                "description": "YYYY-MM"
              }
            },
            "additionalProperties": false
          },
          "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "certificates": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "date": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "name": {
                "type": "string"
              },
              "issuer": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "customSections": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "title",
              "items"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "title"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Omit to auto-generate."
                    },
                    "title": {
                      "type": "string"
                    },
                    "bullets": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "subtitle": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "title": {
                "type": "string",
                "description": "Section heading, e.g. \"Publications\" or \"Volunteering\"."
              }
            },
            "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
    }
    arguments 321 lines
  • apply_to_job changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "job_id"
      ],
      "properties": {
        "job_id": {
          "type": "string",
          "format": "uuid",
          "description": "Job ID to apply for (from search_jobs or get_job)"
        },
        "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": "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"
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • search_companies reads unknown 22h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "page": {
          "type": "integer",
          "minimum": 1,
          "description": "Page number (default: 1)"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default: 10)"
        },
        "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"
        }
      },
      "additionalProperties": false
    }
    arguments 34 lines
  • get_job reads unknown 22h ago

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

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "slug"
      ],
      "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)."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • submit_news_translation changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "news_id",
        "locale",
        "title",
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "minLength": 1,
          "description": "Translated body, in the target locale — HTML or plain text, same format as the source"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Translated title, in the target locale"
        },
        "locale": {
          "type": "string",
          "description": "2-letter target locale code (e.g. \"fi\") — see get_missing_news_translations for what a given article still needs"
        },
        "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."
        },
        "news_id": {
          "type": "integer",
          "description": "The news_id of the published English source article (from get_news or get_missing_news_translations)"
        },
        "content_format": {
          "enum": [
            "html",
            "markdown"
          ],
          "type": "string",
          "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."
        }
      },
      "additionalProperties": false
    }
    arguments 44 lines
  • admin_create_news changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "title",
        "body",
        "locale"
      ],
      "properties": {
        "body": {
          "type": "string",
          "minLength": 1,
          "description": "Article body in the format selected by content_format"
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Article title, in the target locale"
        },
        "locale": {
          "type": "string",
          "description": "2-letter locale code to publish directly into (e.g. \"en\", \"de\") — no English-first requirement, unlike draft_news"
        },
        "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."
        },
        "published": {
          "type": "boolean",
          "description": "Whether the article goes live immediately. Defaults to true. No safety classifier runs either way — admin judgment only."
        },
        "category_id": {
          "type": "integer",
          "description": "Category ID; defaults to the site's default news category"
        },
        "content_format": {
          "enum": [
            "html",
            "markdown"
          ],
          "type": "string",
          "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"
          },
          "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."
        }
      },
      "additionalProperties": false
    }
    arguments 59 lines
  • admin_translate_news changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "news_id"
      ],
      "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). The token must belong to an admin account — a valid but non-admin key is rejected."
        },
        "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."
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • admin_get_news_translation_status reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "news_id"
      ],
      "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). The token must belong to an admin account — a valid but non-admin key is rejected."
        },
        "news_id": {
          "type": "integer",
          "description": "Any news row in the translation family."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • update_resume changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "resume_id"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name shown on the resume header."
        },
        "title": {
          "type": "string",
          "description": "New internal title. Omit to leave unchanged."
        },
        "locale": {
          "type": "string",
          "description": "New locale code. Omit to leave unchanged."
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "skills"
            ],
            "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"
                }
              }
            },
            "additionalProperties": false
          },
          "description": "Skill categories. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "status": {
          "enum": [
            "draft",
            "published",
            "archived"
          ],
          "type": "string",
          "description": "New status. Omit to leave 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)."
        },
        "contact": {
          "type": "object",
          "properties": {
            "email": {
              "type": "string"
            },
            "phone": {
              "type": "string"
            },
            "github": {
              "type": "string"
            },
            "reddit": {
              "type": "string"
            },
            "twitter": {
              "type": "string"
            },
            "website": {
              "type": "string"
            },
            "linkedin": {
              "type": "string"
            },
            "telegram": {
              "type": "string"
            },
            "languages": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "description": "Contact links shown in the header.",
          "additionalProperties": false
        },
        "summary": {
          "type": "string",
          "description": "2-4 sentence professional summary."
        },
        "headline": {
          "type": "string",
          "description": "Short professional title under the name, e.g. \"Senior Software Engineer\"."
        },
        "location": {
          "type": "string",
          "description": "City, Country shown in the header."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "link": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "role": {
                "type": "string"
              },
              "tech": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "remote": {
                "type": "boolean"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "endDate": {
                "type": "string"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Projects section. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "education": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "university"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "field": {
                "type": "string"
              },
              "degree": {
                "type": "string"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "current": {
                "type": "boolean"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "university": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Education history. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "resume_id": {
          "type": "string",
          "format": "uuid",
          "description": "The resume to update — from list_my_resumes."
        },
        "is_default": {
          "type": "boolean",
          "description": "Make this the default resume. Omit to leave unchanged."
        },
        "experiences": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "company",
              "title"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "title": {
                "type": "string"
              },
              "bullets": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "company": {
                "type": "string"
              },
              "current": {
                "type": "boolean"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM, omit/empty if current"
              },
              "location": {
                "type": "string"
              },
              "startDate": {
                "type": "string",
                "description": "YYYY-MM"
              }
            },
            "additionalProperties": false
          },
          "description": "Work history, most recent first. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "certificates": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "date": {
                "type": "string",
                "description": "YYYY-MM"
              },
              "name": {
                "type": "string"
              },
              "issuer": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "description": "Certifications. If provided, replaces this entire section — send the complete list, not just what changed."
        },
        "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."
        },
        "customSections": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "title",
              "items"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Omit to auto-generate."
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "title"
                  ],
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Omit to auto-generate."
                    },
                    "title": {
                      "type": "string"
                    },
                    "bullets": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "subtitle": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              },
              "title": {
                "type": "string",
                "description": "Section heading, e.g. \"Publications\" or \"Volunteering\"."
              }
            },
            "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
    }
    arguments 342 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id face9a7e25033804.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/face9a7e25033804/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/face9a7e25033804/badge.svg)](https://brick.blue/agent/face9a7e25033804?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.