Farrukh Inomov's portfolio: profile, experience, projects, blog, messages and intro calls.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Requests a 30-minute intro call at a free time from get_available_slots. Farrukh confirms every request; Cal.com then emails the Google Meet invitation. Confirm the details with the user first.
Full name of the person who will join the call
Cal.com sends the invitation to this address
Start of a free slot from get_available_slots
What the call is about, 10 to 1000 characters
Company the person works for
IANA time zone of the user, e.g. "Europe/Berlin" or "America/New_York".
Language of the invitation: "de" or "en".
Optional link, e.g. to the job posting
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http portfolio https://inomov.online/api/mcp
Requests a 30-minute intro call at a free time from get_available_slots. Farrukh confirms every request; Cal.com then emails the Google Meet invitation. Confirm the details with the user first.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the invitation: "de" or "en". |
| link | any | Optional link, e.g. to the job posting |
| name* | string | Full name of the person who will join the call |
| email* | string | Cal.com sends the invitation to this address |
| start* | string | Start of a free slot from get_available_slots |
| reason* | string | What the call is about, 10 to 1000 characters |
| company* | string | Company the person works for |
| timeZone* | string | IANA time zone of the user, e.g. "Europe/Berlin" or "America/New_York". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"email",
"company",
"reason",
"start",
"timeZone"
],
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the invitation: \"de\" or \"en\"."
},
"link": {
"anyOf": [
{
"type": "string",
"const": ""
},
{
"type": "string",
"pattern": "^[^\\s\\p{Cc}]+$",
"maxLength": 500
}
],
"default": "",
"description": "Optional link, e.g. to the job posting"
},
"name": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 100,
"minLength": 2,
"description": "Full name of the person who will join the call"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Cal.com sends the invitation to this address"
},
"start": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start of a free slot from get_available_slots"
},
"reason": {
"type": "string",
"maxLength": 1000,
"minLength": 10,
"description": "What the call is about, 10 to 1000 characters"
},
"company": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 100,
"minLength": 2,
"description": "Company the person works for"
},
"timeZone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone of the user, e.g. \"Europe/Berlin\" or \"America/New_York\"."
}
}
}Free times for a 30-minute intro call on Google Meet in the next 30 days. Pass one as start to book_call.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
| timeZone | string | IANA time zone of the user, e.g. "Europe/Berlin" or "America/New_York". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
},
"timeZone": {
"type": "string",
"default": "Europe/Berlin",
"maxLength": 64,
"description": "IANA time zone of the user, e.g. \"Europe/Berlin\" or \"America/New_York\"."
}
}
}Work history and education, newest first, with role, period, summary, highlights and the technologies used.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only work or only education; both when left out. |
| lang | string | Language of the answer: "de" for German or "en" for English. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kind": {
"enum": [
"work",
"education"
],
"type": "string",
"description": "Only work or only education; both when left out."
},
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
}
}
}One blog post with its full text as Markdown.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
| slug* | string | Slug from list_posts |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
},
"slug": {
"enum": [
"ai-assistants-mcp",
"react-quality-gates",
"portfolio-for-humans-and-agents"
],
"type": "string",
"description": "Slug from list_posts"
}
}
}Who Farrukh Inomov is: headline, summary, location, contact email, languages, awards and links to the site, the CV (PDF), GitHub and LinkedIn.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
}
}
}One project with its description and what has been built so far.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
| slug* | string | Slug from list_projects |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
},
"slug": {
"enum": [
"kritis-grc",
"inomov-online",
"flowpro",
"tray-utility-app"
],
"type": "string",
"description": "Slug from list_projects"
}
}
}Skills grouped by where they come from: professional work, own projects, and how Farrukh works.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
}
}
}All blog posts, newest first, with title, description, date, tags and reading time.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
}
}
}All projects with tagline, stack, year and links. Use get_project with a slug for the details.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language of the answer: "de" for German or "en" for English. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language of the answer: \"de\" for German or \"en\" for English."
}
}
}Sends a message to Farrukh by email, e.g. a job offer or a project inquiry. He replies to the given address, usually within two working days. Confirm the content with the user first.
| Argument | Type | Description |
|---|---|---|
| lang | string | Language the message is written in: "de" or "en". |
| name* | string | Full name of the person writing |
| email* | string | Email address Farrukh replies to |
| topic* | string | job: a job offer; freelance: a project; question: about a project or post; other |
| company | string | Company, if any |
| message* | string | The message itself, 20 to 5000 characters |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"email",
"topic",
"message"
],
"properties": {
"lang": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "en",
"description": "Language the message is written in: \"de\" or \"en\"."
},
"name": {
"type": "string",
"pattern": "^[^\\r\\n]*$",
"maxLength": 100,
"minLength": 2,
"description": "Full name of the person writing"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address Farrukh replies to"
},
"topic": {
"enum": [
"job",
"freelance",
"question",
"other"
],
"type": "string",
"description": "job: a job offer; freelance: a project; question: about a project or post; other"
},
"company": {
"type": "string",
"default": "",
"pattern": "^[^\\r\\n]*$",
"maxLength": 100,
"description": "Company, if any"
},
"message": {
"type": "string",
"maxLength": 5000,
"minLength": 20,
"description": "The message itself, 20 to 5000 characters"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.