One Coworking
Find and compare coworking spaces and offices in 300+ European cities; get office quotes.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"mcp": {
"url": "https://www.onecoworking.com/api/mcp"
}
}
}远程端点
https://www.onecoworking.com/api/mcpstreamable-http它能做什么
工具清单
工具(11)
🟢get_booking_links(product, venue_slugs, city, near, date, ...)
Use this when the person wants a day pass or a meeting room. Pass up to 3 venue slugs from search_venues (or only a city — and near, when they want to be close to a place — for the nearest spaces that book directly), the date and how many people. Returns, per space, a One Coworking booking link with date and party size filled in — confirmed when the person pays — or the venue page where they send a request (the space confirms by hand, so prefer instant spaces for a close date). A day pass for several days at one space is one link and one checkout: pass dates (up to 10). A meeting room is one day per link; a workshop or event with a room on several days, several rooms, catering or a seating layout needs a quote, not a link: use request_meeting_space. Not for private offices: use request_office_quotes.
输入模式
{
"type": "object",
"properties": {
"product": {
"type": "string",
"enum": [
"day_pass",
"meeting_room"
]
},
"venue_slugs": {
"default": [],
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,200}$"
}
},
"city": {
"description": "Only needed without venue_slugs.",
"type": "string",
"minLength": 2,
"maxLength": 80
},
"near": {
"description": "A station, landmark, hotel or street address to be close to, e.g. \"Hauptbahnhof\", \"Sendlinger Straße 10\". Without venue_slugs: the spaces nearest to it that book directly; with them: walking minutes to each.",
"type": "string",
"minLength": 2,
"maxLength": 120
},
"date": {
"description": "YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"dates": {
"description": "A day pass for several days at one space: every day, YYYY-MM-DD (consecutive or not). Instead of date.",
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"people": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"end_time": {
"description": "HH:MM the space is needed until (skips spaces closed by then).",
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
}
},
"required": [
"product"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢start_office_brief(city, team_size, team_size_in_12_months, format, area, ...)
Use this when someone is looking for an office, desks for a team or a team space, before searching or shortlisting. Pass what the person already said; returns the questions still open (in a broker's order, with the city's real districts) and when to search. Call it again as answers come in. Not for day passes or meeting rooms.
输入模式
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"team_size": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"team_size_in_12_months": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"format": {
"description": "private_room = a room with a door.",
"type": "string",
"enum": [
"private_room",
"fixed_desks",
"flex_desks"
]
},
"area": {
"description": "Districts, a station or street they named.",
"type": "string",
"maxLength": 160
},
"budget_monthly_eur": {
"description": "Total per month for the team.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000
},
"move_in": {
"type": "string",
"maxLength": 40
},
"usage_term": {
"type": "string",
"maxLength": 40
},
"must_haves": {
"type": "string",
"maxLength": 400
},
"context": {
"description": "Stage, what matters most, current space.",
"type": "string",
"maxLength": 400
},
"current_lease_end": {
"description": "When their current lease ends, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"decision": {
"description": "Who decides and by when: a role (themselves, founder, CFO, board, parent company), never a person's name, plus the date if they named one.",
"type": "string",
"maxLength": 300
},
"alternatives": {
"description": "What else they consider: a traditional lease, a sublease, staying, going remote, another broker, spaces asked directly.",
"type": "string",
"maxLength": 300
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_venues(city, product, max_price, bookable, team_size, ...)
Use this when the person wants spaces in a city listed on One Coworking. product filters (day_pass, meeting_room, private_office, office_suite, flex_desk, fix_desk, day_office, membership); max_price is EUR in that product's unit (offices: per desk per month, day passes: per day, meeting rooms: per hour). For private_office / office_suite the answer is a broker's shortlist — the well-known brands in the city, then local operators that fit team_size and area; view "list" gives the plain list ranked by fit and price instead. bookable "instant" / "online" keeps venues that book online. Cite the venue pages; get_venue has one venue's details.
输入模式
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "City name in English, e.g. \"Berlin\", \"Munich\", \"London\"."
},
"product": {
"type": "string",
"enum": [
"day_pass",
"meeting_room",
"private_office",
"flex_desk",
"fix_desk",
"day_office",
"membership",
"office_suite"
]
},
"max_price": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000
},
"bookable": {
"type": "string",
"enum": [
"instant",
"online"
]
},
"team_size": {
"description": "People the office must seat. Ranks offices that fit first; applies with product private_office or office_suite.",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"area": {
"description": "Districts the person wants, e.g. \"Kreuzberg or Mitte\" — office shortlists prefer spaces there.",
"type": "string",
"maxLength": 160
},
"near": {
"description": "A station, landmark, hotel or street address in the city to be close to, e.g. \"Hauptbahnhof\", \"Rudi-Dutschke-Straße 5\". Ranks spaces by walking minutes from it.",
"type": "string",
"minLength": 2,
"maxLength": 120
},
"budget_monthly_eur": {
"description": "Total monthly budget for the team, EUR — office shortlists say which options fit it.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000
},
"view": {
"description": "Office searches only: shortlist (default) or the plain ranked list.",
"type": "string",
"enum": [
"shortlist",
"list"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"city"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_venue(slug)
Everything One Coworking publishes about one venue, as Markdown: address, district, starting prices with units and the date they were checked, private offices the operator confirmed (price, desks, m², term, move-in date, confirmation date), opening hours, amenities, rating, FAQ, and how to book or request an offer. `slug` is the last path segment of the venue URL (https://www.onecoworking.com/venues/{slug}).
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,200}$",
"description": "Venue slug, e.g. \"betahaus-barcelona\"."
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢city_prices(city)
Typical starting list prices in a city across its public venues: day pass per day, private office per desk per month, desks (flex / fixed) per month, meeting room per hour — 10th–90th percentile with the median, recomputed hourly from live listings. Private offices and desks are separate lines: the office range never includes a desk price.
输入模式
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 2,
"maxLength": 80
}
},
"required": [
"city"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢team_coverage(cities)
For a company whose people work from several cities: what they can book INSTANTLY on a One Coworking team account in each named city — spaces with an instantly bookable day pass, their median day-pass price (net EUR, what the team pays in credits) and how many also have bookable meeting rooms. Same numbers as https://www.onecoworking.com/solutions/teams. Use it before recommending a team account; the answer also carries the account terms (1 credit = €1 net, €500 first top-up, credits valid 6 months, no per-seat fee) and the link to the free coverage check for cities not covered yet.
输入模式
{
"type": "object",
"properties": {
"cities": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"description": "City names in English or the local language, e.g. [\"Berlin\", \"München\", \"Lisboa\"]."
}
},
"required": [
"cities"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴request_office_quotes(firstname, lastname, company, email, phone, ...)
Use this when the person wants prices and availability for an office or team space and the brief is clear (start_office_brief): One Coworking asks the spaces and negotiates for them, free for the person. Only after they agreed to share name, company and email. Pass every answer from the brief and up to 6 venue slugs they want asked. Nothing reaches a space yet: they get a 6-digit code by email — then call confirm_email_code. Not for day passes or meeting rooms (monthly_membership = desks on a monthly plan).
输入模式
{
"type": "object",
"properties": {
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"type": "string",
"maxLength": 100
},
"company": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The company, or \"private\" for an individual."
},
"email": {
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"type": "string",
"maxLength": 40
},
"inquiry_type": {
"default": "private_office",
"type": "string",
"enum": [
"private_office",
"monthly_membership"
]
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"area": {
"description": "District(s), street or station they want to be near.",
"type": "string",
"maxLength": 120
},
"team_size": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"move_in_timeframe": {
"type": "string",
"enum": [
"immediate",
"1m",
"3m",
"flexible"
]
},
"move_in_date": {
"description": "A move-in day the person named, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"usage_term": {
"description": "How long: 1_3m, 3_12m, 12m_plus, flexible, …",
"type": "string",
"enum": [
"one_off",
"multi_day",
"weeks",
"1_3m",
"3_12m",
"12m_plus",
"flexible"
]
},
"budget_monthly_min_eur": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000
},
"budget_monthly_max_eur": {
"description": "Total monthly budget in EUR, not per desk.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000
},
"team_size_in_12_months": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"format": {
"description": "private_room = a room with a door.",
"type": "string",
"enum": [
"private_room",
"fixed_desks",
"flex_desks"
]
},
"must_haves": {
"description": "Must-haves and deal-breakers.",
"type": "string",
"maxLength": 400
},
"context": {
"description": "Stage, what matters most, current space, spaces already contacted.",
"type": "string",
"maxLength": 400
},
"current_lease_end": {
"description": "When their current lease ends, YYYY-MM-DD.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"decision": {
"description": "Who decides and by when: a role (themselves, founder, CFO, board, parent company), never a person's name, plus the date if they named one.",
"type": "string",
"maxLength": 300
},
"alternatives": {
"description": "What else they consider: a traditional lease, a sublease, staying, going remote, another broker, spaces asked directly.",
"type": "string",
"maxLength": 300
},
"message": {
"description": "Anything else the broker should know.",
"type": "string",
"maxLength": 4000
},
"venue_slugs": {
"default": [],
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,200}$"
}
},
"locale": {
"description": "Language for One Coworking's emails.",
"type": "string",
"enum": [
"en",
"de",
"pl",
"es"
]
},
"consent": {
"type": "boolean",
"const": true,
"description": "true: the person agreed that One Coworking stores these details and contacts spaces for them."
}
},
"required": [
"firstname",
"company",
"email",
"city",
"team_size",
"consent"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢request_meeting_space(firstname, lastname, company, email, phone, ...)
Use this when the person needs a meeting room or event space that one booking link cannot carry: several days (each with its own times and headcount), several rooms at the same time, a seating layout, catering or equipment — e.g. a 2-day workshop for 20 with a projector and lunch, or two rooms in parallel for interviews. One room on one day: get_booking_links. A regular slot (every week, every second Monday) is a monthly membership: request_office_quotes with inquiry_type monthly_membership. Before calling, read the whole request back to the person — days, times, people, rooms, layout, catering, equipment, budget, spaces — and get their yes; only after they agreed to share name, company and email. No guest list. Pass up to 3 venue slugs from search_venues (the first is asked first), or only a city. Nothing reaches a space yet: the person gets a 6-digit code by email — then call confirm_email_code. The space and One Coworking confirm availability and price by email; this call books nothing.
输入模式
{
"type": "object",
"properties": {
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"type": "string",
"maxLength": 100
},
"company": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The company, or \"private\" for an individual."
},
"email": {
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"type": "string",
"maxLength": 40
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"near": {
"description": "A street, station or district to be near, in the person's words. No names or contact details.",
"type": "string",
"maxLength": 120
},
"days": {
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD, today or later."
},
"from": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "Start, HH:MM (24 h)."
},
"to": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "End, HH:MM (24 h), after the start."
},
"people": {
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"required": [
"date",
"from",
"to",
"people"
]
},
"description": "One row per day, all within a month: e.g. Tue 12:00–18:00 for 20, Wed 08:00–14:00 for 20."
},
"rooms": {
"default": 1,
"description": "Rooms needed at the same time — 2 for parallel interviews, 5 for a plenary and four breakouts.",
"type": "integer",
"minimum": 1,
"maximum": 6
},
"layout": {
"default": "any",
"type": "string",
"enum": [
"boardroom",
"classroom",
"theatre",
"u_shape",
"workshop_tables",
"any"
]
},
"catering": {
"default": [],
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"coffee",
"drinks",
"lunch",
"snacks"
]
}
},
"av": {
"default": [],
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"screen",
"projector",
"video_conferencing",
"whiteboard",
"flipchart"
]
}
},
"budget_total_eur": {
"description": "For the whole booking in EUR, not per hour or per day.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"must_haves": {
"description": "Anything else the space must offer, in the person's words — e.g. step-free access, vegetarian lunch. No names, company or contact details.",
"type": "string",
"maxLength": 300
},
"venue_slugs": {
"default": [],
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,200}$"
}
},
"locale": {
"description": "Language for One Coworking's emails.",
"type": "string",
"enum": [
"en",
"de",
"pl",
"es"
]
},
"consent": {
"type": "boolean",
"const": true,
"description": "true: the person agreed that One Coworking stores these details and passes the request to spaces for them."
}
},
"required": [
"firstname",
"company",
"email",
"city",
"days",
"consent"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢confirm_email_code(request_id, code)
Confirm an office or meeting request with the 6-digit code One Coworking emailed the person. Only then does the request reach One Coworking. Returns a reference and an access key — keep the key for get_request_status (and, for an office, request_viewing) in this conversation.
输入模式
{
"type": "object",
"properties": {
"request_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"code": {
"type": "string",
"minLength": 6,
"maxLength": 12
}
},
"required": [
"request_id",
"code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_request_status(access_key)
Where a confirmed office or meeting request stands: stage, how many spaces were asked, how many answered with a price, and the viewings requested. Prices are not shown here — they reach the person by email.
输入模式
{
"type": "object",
"properties": {
"access_key": {
"type": "string",
"minLength": 10,
"maxLength": 100,
"description": "The access key confirm_email_code returned."
}
},
"required": [
"access_key"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪request_viewing(access_key, venue_slug, dates, visitors, notes)
Ask One Coworking to arrange a viewing of a space for a confirmed office request. Give up to 3 preferred dates, each before lunch (am), afternoon (pm) or either. A broker agrees the time with the space and confirms it to the person by email, usually within one working day — this call does not confirm a time.
输入模式
{
"type": "object",
"properties": {
"access_key": {
"type": "string",
"minLength": 10,
"maxLength": 100,
"description": "The access key confirm_email_code returned."
},
"venue_slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,200}$"
},
"dates": {
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"window": {
"default": "either",
"type": "string",
"enum": [
"am",
"pm",
"either"
]
}
},
"required": [
"date"
]
}
},
"visitors": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"notes": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"access_key",
"venue_slug",
"dates"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据