Skip to main content

Connect an AI agent to your account

The agent you already work with can run your partnerships without opening a browser.

One command, and it works

The command opens 1lev1 in your browser, you approve the connection, and the key is written into every agent you have installed — together with the skill.

npx 1lev1-mcp

Restart your agent afterwards so it picks up the new configuration.

From your phone and browser — no terminal

The Claude app, claude.ai and Claude Code in the browser connect through a connector: you paste one address, approve it in the browser, and that is it. No key to copy, no config file to edit.

  1. Open Settings → Connectors → Add custom connector.
  2. Give it a name — 1lev1, for example — and paste the server address below.
  3. Press Connect. A 1lev1 page opens; log in and approve the connection.
  4. Done. One connection covers chat on your computer, the app on your phone and Claude Code in the browser.

Server endpoint

https://api.1lev1.com/api/mcp

The connection mints an ordinary API key on your account. It shows up on the API keys page and is revoked from there, exactly like a key created from the terminal.

Claude Code — via the plugin

If you work in Claude Code you can install the skill from the marketplace, then connect your account with the command above.

/plugin marketplace add Avi-ADAM/1lev1-agent
/plugin install 1lev1@1lev1

The plugin brings the knowledge; the connect command brings the access. You need both.

What you can then ask

  • What am I supposed to be working on today?
  • Start the timer on the logo mission.
  • I worked three hours on the design yesterday — log it.
  • How many hours have I accrued in this partnership?
  • Turn this repo into a partnership with the three of us.
  • What is waiting for my approval?

What the agent will not do for you

1lev1 runs on consent, so the agent never performs an act that touches another person. Instead it prepares the form and sends you to approve it on the site.

  • It does not vote or sign a profit-split in your place.
  • It does not accept offers or change another member's standing in a partnership.
  • It cannot see any other user's data — the key is bound to your account alone.
  • Creating missions and tasks for other people is off by default and needs an explicit grant.

What this actually is

MCP is an open protocol that lets an AI agent connect to outside services. The 1lev1 MCP server gives your agent access to your missions, timers and partnerships — and only yours. The skill installed alongside it teaches the agent how the platform works: what a rikma is, why logged hours are ownership, and what it must never do on somebody else's behalf.

Supported agents

The command detects what you actually have installed and writes only to that: Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Roo Code, Continue, Antigravity and VS Code. It leaves alone any config file it cannot parse, and backs up every file before changing it.

ChatGPT, Gemini and other agents

The server speaks standard MCP, so it is not Claude-only. What works today:

  • ChatGPT — turn on Developer mode in settings, add a connector with the same server address, and approve it in the browser. Paid plans only.
  • Gemini CLI and Antigravity — the connect command above writes to them directly, like any other editor.
  • Gemini Enterprise — an admin adds a custom MCP server under Connected apps. That form needs a manual client id and secret — write to us and we will issue them for your organisation's callback address.
  • Codex CLI — added by hand to ~/.codex/config.toml, with the key living in an environment variable rather than in the file.
  • n8n, Zapier or an agent you wrote yourself — any MCP client that speaks Streamable HTTP with an Authorization header works against the same address.
[mcp_servers.lev1]
url = "https://api.1lev1.com/api/mcp"
bearer_token_env_var = "LEV1_API_KEY"

The consumer Gemini app still does not let you add an MCP server yourself — connections there open only through partnerships with Google.

Manual setup

If your agent is not on the list you can add the server by hand. Get the key from the command above.

Server endpoint

https://api.1lev1.com/api/mcp
{
  "mcpServers": {
    "1lev1-mcp": {
      "type": "http",
      "url": "https://api.1lev1.com/api/mcp",
      "headers": { "Authorization": "Bearer 1lev1_..." }
    }
  }
}

Security and disconnecting

  • The key is a password in every practical sense. Do not share it, and do not commit it to git.
  • Approving again from the site replaces the previous key and revokes the old access.

To disconnect completely, this command removes the server and the skill from every agent.

npx 1lev1-mcp remove

That command only cleans up your local configs — the key itself stays valid. To invalidate it, run the connect command again and approve: it replaces the previous key.

For AI assistants

Tool reference

Every tool the connector gives a signed-in account, read from the server itself - so this list is always the one your assistant gets. Tool descriptions are what the assistant reads, so they stay in English.

How the connector handles your information

Read

Reads only. Returns what you could see on the site yourself.

findUserProjectsTool

Find my rikmas
  • Read-only

Find the projects (rikmot) the current user belongs to, newest first, with their creation time. Use this when the user mentions a project by name, wants to navigate to one, or just created one. Results are paginated: when hasMore is true, call again with offset=nextOffset.

Inputs
userId string optional
User id to list projects for. Omit to use the authenticated caller.
query string optional
Optional search query to filter projects by name (case-insensitive substring).
limit integer optional
Page size, default 50.
offset integer optional
How many results to skip, default 0.

getProjectDetailsTool

Get rikma details
  • Read-only

Get the facts about one rikma (project): name, public description, values, links (website, GitHub, Drive, social), members, roles, open missions, missions in progress (and who holds them), open and in-progress resources, and products. Call this before planning or writing anything in a rikma - it is cheap and returns facts, unlike scanProjectDirectionsTool. For a rikma the user is not a member of, only the public face is returned (isMember:false).

Inputs
projectId string required
Rikma (project) id, from findUserProjectsTool.

listProjectResourcesTool

List rikma resources
  • Read-only
  • Rikma members only

List what a rikma already has and needs: its links (live website, repo, Drive, social), resources in progress (equipment, money, services someone provides) and open resources it is looking for, plus its products. Use it to check whether a rikma already has a website/repo before suggesting one. Members only.

Inputs
projectId string required
Rikma (project) id, from findUserProjectsTool.

getProjectStatsTool

Get rikma stats
  • Read-only
  • Rikma members only

Get the pulse of one rikma as numbers: members, open missions, missions in progress, open resources, open decisions (votes), active timers, missions finished and hours logged in the last N days, and when anything last happened. Use it to judge whether a rikma is active before planning. Members only; no per-member financial data.

Inputs
projectId string required
Rikma (project) id, from findUserProjectsTool.
days integer optional
Window for the "recent" numbers, default 30.

getProjectMembersTool

List rikma members
  • Read-only
  • Rikma members only

List the people (members) and roles (tafkidim) of a project. Use this to resolve a task assignee - a person or a role - to its ID before calling createTaskTool. For a task with no specific person, pick the roles that fit it here and pass their IDs as tafkidims.

Inputs
projectId string required
ID of the project
query string optional
Optional text to filter people or roles by name

getMemberMissionsTool

List a member's missions
  • Read-only
  • Rikma members only

List a project member's in-progress missions. A task is linked to a mission-in-progress the assignee performs, so call this after choosing the assignee (a person) to pick the missionId to pass to createTaskTool. If no mission in progress covers the work, it is not a task: prepare a mission with prepareMissionTool instead.

Inputs
projectId string required
ID of the project
userId string required
ID of the member (assignee) whose in-progress missions to list

getMissionDetailsTool

Get mission details
  • Read-only
  • Rikma members only

Get detailed information about a specific mission including tasks, timeline, and current status

Inputs
missionId string required
Mission ID to get details for

listUserMissionsTool

List my missions
  • Read-only

List user missions with various filtering options

Inputs
filter "all" | "active" | "completed" | "startable" | "stoppable" | "overdue" optional
Filter missions by status
projectId string optional
Filter by specific project ID (numeric)
projectName string optional
Filter by project name
missionName string optional
Search for missions by name (partial match)
limit number optional
Maximum number of missions to return

findMissionTool

Find a mission
  • Read-only

Find a specific mission for the user by its name.

Inputs
missionName string required
The name of the mission to find.

getActiveTimersTool

Get running timers
  • Read-only

Get all currently active timers for the user

Inputs
includeDetails boolean optional
Include detailed timer information

getMissionStatsTool

Get mission stats
  • Read-only

Get statistics about user missions including counts by status, time spent, etc.

Inputs
projectId string optional
Get stats for specific project only

searchCatalogTool

Search the catalog
  • Read-only

Search what the platform already offers publicly: products for sale, open missions (work looking for someone) and open resources (equipment, money, services a rikma needs). Use it before opening a new wish or mission - somebody may already do this. Public data only.

Inputs
query string required
Free text; matched against names, descriptions and rikma names.
kinds "products" | "missions" | "resources"[] optional
Which directories to search. Default: all three.
limit integer optional
Maximum rows per kind, default 10.

searchContentTool

Search my rikmas
  • Read-only

Search inside the rikmas the caller belongs to: rikma names and descriptions, open missions, missions in progress, acts, open and in-progress resources, and products. Use it to find something when the rikma is not known - "where was that task about the logo". For public listings of other rikmas use searchCatalogTool instead.

Inputs
query string required
Free text; matched against names and descriptions.
limit integer optional
Maximum rows per kind, default 10.

listMyWishesTool

List my wishes
  • Read-only

List the caller's own wishes (concierge requests): status, coverage, and how many missions and resources each one still needs. Use it to answer "what did I ask for" and to pick the wish a follow-up is about.

Inputs

No inputs.

getWishDetailsTool

Get wish details
  • Read-only

Get one wish (concierge request): what it needs broken into missions and resources, its coverage, and the proposals on it. Full detail for the wish owner and for anyone who proposed on it; others see only the public card of an open wish. Accepting or declining a proposal is never done here - open the returned URL and let the person decide.

Inputs
wishId string required
Wish (ratson) id, from listMyWishes or a /concierge or /wish URL.

listMyWishOffersTool

List offers on my wishes
  • Read-only

The supplier side of the concierge: every proposal the caller is the proposer of - what someone asked them to provide and what they offered, with its status. Use it to answer "who wants something from me". Responding to one happens on its page, not here.

Inputs

No inputs.

listMyConversationsTool

List my conversations
  • Read-only

List the conversations (forums) the caller takes part in - one per mission, act, decision, profit split or wish proposal they are involved in, newest first, with the last message. Use it to find the forumId of the thread a request is about.

Inputs
projectId string optional
Only conversations of this rikma.
limit integer optional
Maximum rows, default 25.

readConversationTool

Read a conversation
  • Read-only

Read one conversation (forum) the caller takes part in: its messages, newest last, with who wrote each. Use it before answering in a thread, so the reply fits what was already said.

Inputs
forumId string required
Forum id, from listMyConversations.
limit integer optional
How many of the most recent messages, default 30.

getSitePagesTool

List site pages
  • Read-only

Get a structured list of available pages on the 1lev1.com site, useful for navigation.

Inputs

No inputs.

listRikmaProcessesTool

List rikma processes
  • Read-only
  • Rikma members only

List a rikma's processes: the open-ended threads it is running - an approach to a partner, a launch, a funding attempt - each with its conversation and the open missions, resources and other objects that have formed out of it. Use it to see what is already in motion before starting something new. Members only.

Inputs
projectId string required
Rikma (project) id.

Prepare

Returns a link or a proposal, or saves a draft that binds nobody. People approve on the site.

createProjectTool

Prepare a new rikma
  • Read-only

Prepare the "create a Partnership" form (a Partnership is also called a rikma, or "רקמה") and return a link that opens it pre-filled. Nothing is created yet: status is "prepared" until the user opens the link and approves the form. Give the user `url` exactly as returned — do not decode, shorten or rebuild it. A public-benefit or nonprofit initiative is a normal Partnership, not a failed business: every Partnership has a public support page (/project/<id>/support) where anyone can donate to it or fund a specific mission, so the public can cover the members' work hours even when nothing is ever sold.

Inputs
name string required
The name of the new Partnership. Required.
desc string optional
A short public description (plain text, one or two sentences).
details string optional
Detailed description as raw HTML, e.g. `<h2>Title</h2><p>Body</p>`. Allowed tags: h1, h2, h3, p, ul, ol, li, strong, em, u, s, a, br, blockquote. Do NOT HTML-escape it (send `<p>`, not `&lt;p&gt;`).
url string optional
A link to a website related to the project.
vals string[] optional
Values and goals of the partnership, as their names. A value may contain commas.
res "feh" | "sth" | "nsh" | "sevend" optional
Response time ID: feh (48h), sth (72h), nsh (96h), sevend (1 week).
profit "already" | "week" | "month" | "threeM" | "sixM" | "oneY" | "twoY" | "more" | "never" optional
When the Partnership expects to earn from sales: already, week, month, threeM, sixM, oneY, twoY, more, or never. `never` is the correct value for a nonprofit / public-benefit initiative - it means "selling is not the goal", not "it will fail". Such a Partnership is funded through its public support page, where donors can cover the work hours.
ont boolean optional
Whether the partnership is continuous (true) or a one-time event (false).

prepareMissionTool

Prepare a mission
  • Read-only
  • Rikma members only

Prepare the mission creation form and return a link that opens it pre-filled. Use this when the user should review and confirm the mission before it is published. A mission is for work that needs an implementer to be found. If a mission in progress already covers the work, create a task (act) on it with createTaskTool instead. Check the rikma's open missions (getProjectDetailsTool) first: when one already covers the work, point the user to it rather than preparing a duplicate. Mission names are also entries in a platform-wide catalogue where each name is unique; publishing a name that is already there reuses that catalogue entry automatically (the rikma's mission keeps its own description, hours and rate), so never rename a mission just to make it unique. Nothing is created yet: status is "prepared" until the user opens the link and publishes. Give the user `url` exactly as returned — do not decode, shorten or rebuild it. Requires a projectId - use findUserProjects first if not known.

Inputs
projectId string required
ID of the project where the mission will be created.
name string required
Mission name (required).
descrip string optional
Mission description as rich HTML - strongly preferred over plain text; a partner decides whether to join from this. Allowed tags: h1, h3, p, ul, ol, li, strong, em, a, br. Recommended shape: a short intro <p>, then a <ul> of concrete deliverables and what done looks like. Do NOT HTML-escape it (send `<p>`, not `&lt;p&gt;`).
skills string[] optional
Skill names, free text in the user's language. Matched to the platform catalogue; a skill that does not exist yet is created. Up to 8.
roles string[] optional
Role names, free text. Matched to the catalogue; created when missing. Up to 8.
workways string[] optional
Work-mode names (how the work is done, e.g. "remote", "on-site"), free text. Matched to the catalogue; created when missing. Up to 8.
nhours number optional
Estimated hours.
valph number optional
Value per hour.

planProjectWorkTool

Plan rikma work from an idea
  • Changes data
  • Rikma members only

Turn a free-text brief into a planning board for a project: proposed missions, chores (acts) and resources, deduplicated against what the project already has. Nothing is created - the tool returns a reviewUrl where the user approves each row in the real form. Use this when the user describes something they want the project to achieve in loose words. If the conversation already holds a concrete breakdown (tasks, scope, decisions), use createPlanBoardTool instead - it saves your rows as written. Requires a projectId (use findUserProjectsTool first if unknown). On failure, `error.retryable` says whether calling again can help.

Inputs
projectId string required
ID of the project to plan for.
text string required
What the user wants to advance, in their own words. At least 20 characters - the richer the brief, the better the breakdown.
title string optional
Optional title for the board; otherwise one is suggested.

createPlanBoardTool

Save a planning board
  • Changes data
  • Rikma members only

Create a planning board from rows YOU already structured. Use this when the conversation already holds the breakdown - decisions, scope, a task list: your rows are saved as written, with no second model rewriting or dropping them. Nothing is created - every row is a proposal the user approves in the real creation form at the returned reviewUrl. Every row needs a name AND a descrip; rows without one are not saved and come back in `rejected`. Use planProjectWorkTool instead when the user only has a loose idea in free text. Requires a projectId. On failure, `error.retryable` says whether calling again can help.

Inputs
projectId string required
ID of the project to plan for.
title string required
Board title - the direction these rows advance.
descrip string optional
One or two plain-text sentences on what this board is for.
items object[] required
The rows, in the order the user should see them. 1 to 40.

scanProjectDirectionsTool

Scan rikma directions
  • Changes data
  • Rikma members only

Cheaply scan a project's real current state and propose a few DIRECTIONS for advancing it - strategic angles, not task lists. Use this when the user asks something open-ended like "what should we do next?" or "how do we move this forward?" and has not described a specific goal. These are saved as suggested directions only: nothing is created, and no mission, chore or resource comes out of this call. To break one direction down into concrete missions and resources afterwards, the user opens it on the returned reviewUrl and approves each row there. Requires a projectId. On failure, `error.retryable` says whether calling again can help.

Inputs
projectId string required
ID of the project to scan.

Your own records

Changes only your own records - your timers, your profile, your drafts.

timerActionTool

Start or stop a mission timer
  • Changes data

Perform actions on user timers (start, stop, pause, resume)

Inputs
action "start" | "stop" | "pause" | "resume" required
The action to perform on the timer
missionId string optional
Specific mission ID (optional, will find active timer if not provided)

Waits for consent

Lands something on another member that still waits for that member's approval.

proposeProjectLinkTool

Propose a rikma link
  • Changes data
  • Rikma members only

Set or clear one of a rikma's links - its website, GitHub repo, Drive, Discord, Facebook, X or WhatsApp. In a rikma with more than one member, changing the website or the Facebook link opens a decision the members vote on (silence approves it when the rikma clock runs out); the other links change directly. Members only. Check listProjectResourcesTool first - the link may already be there.

Inputs
projectId string required
Rikma (project) id.
kind "website" | "github" | "drive" | "discord" | "facebook" | "x" | "whatsapp" required
Which link to set.
url string required
The URL. Pass an empty string to clear the link.

createTaskTool

Propose a task
  • Changes data
  • Rikma members only

Create a task (Act, "מטלה") in a project - the way a member gets something new done. Whenever the user wants something new to happen in a project, offer this option. Choose the shape: - A mission in progress already covers the work: create an act linked to it - assignedUserId = the mission holder, missionId from getMemberMissionsTool. - Nobody in the project does this kind of work, so an implementer must be found: this is not an act - prepare a mission with prepareMissionTool. - No specific person yet: create the act with no assignee and pass tafkidims = the roles that fit it (IDs from getProjectMembersTool). The holders of those roles are notified and one of them picks it up. An act assigned to another person waits for that person to approve it; nobody is bound until they accept. The caller must be a member of the project. Requires a project ID.

Inputs
projectId string required
ID of the project where the task will be created
name string required
Short name/title of the task
description string optional
What has to be done and what done looks like, as plain text. Strongly recommended - a title alone is hard to act on.
link string optional
Optional URL related to the task
assignedUserId string optional
ID of the person (project member) to assign this task to - usually the holder of the mission it belongs to. Use getProjectMembersTool to resolve a name to an ID. Mutually exclusive with tafkidims.
tafkidims string[] optional
IDs of the roles (tafkidim) that fit the task, when no specific person is chosen; a holder of one of them picks it up. Use getProjectMembersTool to resolve role names to IDs. Mutually exclusive with assignedUserId.
missionId string optional
ID of the mission in progress (mesimabetahaliches) this task belongs to, from getMemberMissionsTool. Goes with assignedUserId.
hashivut "white" | "green" | "yellow" | "red" optional
Urgency level of the task
dateS string optional
Start date (ISO format)
dateF string optional
End date (ISO format)

Communicate

Visible to others under your name, and binds nobody.

postConversationMessageTool

Post to a conversation
  • Changes data

Post a message, as the user, in a conversation (forum) they take part in - an update on a mission, an answer in a decision thread, a note on a profit split. The other participants are notified. Use it ONLY when the user asked to say or record something; never to think out loud, and never to agree or refuse on their behalf (approving a decision, a split or a proposal is always their own click). The message is marked as written through an agent.

Inputs
forumId string required
Forum id, from listMyConversations.
message string required
The message, in the user's own words and language. Plain text.

openRikmaConversationTool

Open the rikma conversation
  • Changes data
  • Rikma members only

Get the rikma's own general conversation - the one thread that belongs to the whole rikma rather than to a single mission, act or decision. It is created the first time someone opens it. Use it for "what are we doing next" talk; anything about a specific mission, decision or profit split belongs in that thing's own thread, where it stays on record. Returns a forumId for readConversation and postConversationMessage. Members only.

Inputs
projectId string required
Rikma (project) id.

startProcessTool

Start a process
  • Changes data
  • Rikma members only

Start a process in a rikma: a named thread with its own conversation, for something that is not yet a mission or a resource - approaching an organisation, preparing a launch, chasing funding. The description becomes the first message, so a half-formed idea can be written in plain words and take shape later: as it becomes concrete, the open missions and resources it needs are created in the normal way and attached with attachToProcess. Members only. Use it when the user wants to record something the rikma is pursuing, not to file your own notes.

Inputs
projectId string required
Rikma (project) id.
name string required
Short name, e.g. "Approach: city community centre".
description string optional
The raw text, in the user's own words: what this is, who it involves, what is hoped for.

attachToProcessTool

Attach to a process
  • Changes data
  • Rikma members only

Attach an existing object - an open mission, an open resource, a mission in progress, or a mission/resource still being voted on - to a process, so what the rikma is pursuing and what it is actually doing about it stay connected. It does not create the object: create it first (prepareMissionTool, createTaskTool, or the URL the tool returns), then attach it.

Inputs
projectId string required
Rikma (project) id.
processId string required
Process id, from listRikmaProcesses or startProcess.
entityType "openMission" | "openMashaabim" | "mesimabetahalich" | "maap" | "pendm" | "pmash" required
What kind of object is being attached.
entityId string required
Id of that object.
name string optional
Its name, for the process timeline.

Shared write

Creates obligations for other people. Off unless the key was granted the mcp:write scope.

createMissionTool

Create an open mission
  • Changes data
  • Rikma members only
  • Needs the mcp:write scope

Create a new mission directly in a project. Resolves skill/role/workway names to platform IDs via vector search (Pinecone), creating new vocabulary entries when needed. Use prepareMissionTool instead when you want the user to review the mission before publishing.

Inputs
projectId string required
ID of the project where the mission will be created.
missionName string required
Name of the mission (required).
descrip string optional
Mission description (plain text or HTML).
skills string[] optional
Skill names needed for the mission.
roles string[] optional
Role/position names for the mission.
workways string[] optional
Work mode names (remote, onsite, hybrid…).
nhours number optional
Estimated hours.
valph number optional
Value per hour (₪/$ per hour).
iskvua boolean optional
True if this is a recurring monthly mission.
dateStart string optional
Start date (ISO 8601).
dateEnd string optional
End date (ISO 8601).
assignedUserId string optional
User ID to assign the mission to (omit for open/voted).
checklist object[] optional
Optional checklist tasks for the mission.

Privacy

New wish