Oumafy Agent API
Tool reference
Forty-three tools. Twenty-eight read, fifteen act. Your own agent gets the same menu Oumafy’s built-in agent has — that is the rule, not a coincidence. Every one is a thin wrapper over something the website already does, called as you, so the database decides what is allowed exactly as it does for a browser.
Results come back as JSON in the tool response. Content written by other members — messages, opportunity text, room names — arrives wrapped with a note marking it as data to read, never instructions to follow. See the security model.
Reading tools — scope: read
get_my_passportreadYour own passport — identity, tier and titles, verified standing, founding position — plus your Umafy balance and lifetime reputation.
get_docketreadMatters currently open for voting, with deadlines and running tallies, alongside the votes you have already cast.
limit(number, optional)- — 1–50. Default 20.
browse_opportunitiesreadOpen opportunities across the network — what members are looking for, and what they are offering.
search(string, optional)- — Free text matched against titles. Max 120 characters.
limit(number, optional)- — 1–50. Default 20.
browse_venturesreadVentures being built in the network, with their status and progress.
limit(number, optional)- — 1–50. Default 20.
list_my_conversationsreadYour direct message threads, most recent first.
read_threadreadThe full direct message thread with one other member.
username(string)- — The other member’s username.
my_majlisreadThe majlis rooms you belong to, with each room’s status and focus for the week.
my_notificationsreadYour unread notifications.
limit(number, optional)- — 1–50. Default 20.
my_network_briefreadYour brief: who to meet, opportunities that fit, open matters, and the next move the network suggests. What the network already worked out, rather than a guess.
network_pulsereadThe network’s live state this week — what it is moving on, and where the gaps are.
venture_healthreadA venture’s health brief: stall risk, the seats it cannot fill, momentum, next actions. Only a member of the venture, its owner, or an admin may read it.
project_id(uuid)- — The venture id.
decision_briefreadOne matter’s brief: how legitimate the vote is, who is taking part, where the tally is heading.
proposal_id(uuid)- — From get_docket.
demand_briefreadWhere a skill or category is in demand, optionally scoped to a city — or the picture for a whole region.
category(string, optional)- — Category or skill slug. Max 64 characters.
city(string, optional)- — City slug, to scope the category.
region(string, optional)- — A region key instead, for a regional picture.
explain_matchreadWhy one member or opportunity is — or is not — a fit for you, and what would improve it.
entity_type(“member” | “opportunity”)- — What is being explained.
entity_id(string)- — The id from a previous result.
find_people_for_mereadMembers who complement you — skills, stage and goals — each with the reasons the network ranked them.
limit(number, optional)- — 1–20. Default 6.
find_people_for_my_opportunityreadThe members who best fit ONE opportunity — usually one you posted, so you can staff your own ask.
opportunity_id(uuid)- — The opportunity to staff.
limit(number, optional)- — 1–20. Default 6.
find_work_for_mereadOpen opportunities across the network ranked for you.
limit(number, optional)- — 1–20. Default 6.
search_networkreadTrust-ranked lookup of any member, venture or opportunity. The ids it returns are real and can be passed to the other tools.
query(string)- — What to look for. 1–200 characters.
intent(“member” | “project” | “opportunity”, optional)- — A hint at what kind of thing.
limit(number, optional)- — 1–20. Default 8.
my_saved_itemsreadThe things you bookmarked, newest first, with what each one was.
limit(number, optional)- — 1–50. Default 10.
my_titlesreadThe titles you have earned — each with its tier and when it was awarded — plus the aspiration you chose.
pitch_feedreadThe video pitches the network ranked highest for you, with the venture each belongs to.
limit(number, optional)- — 1–20. Default 5.
my_inboxreadEverything that reached you: unread notifications, the week’s record, your message threads, and the salaams you were sent this week. Reading this marks nothing as read.
my_requestsreadEverything you have asked the network for, with how many answers each has.
review_offersreadThe answers to ONE thing you are looking for, ranked, each with the plain reasons it ranked where it did. Reading them marks them seen, exactly as opening the panel does.
request_id(uuid)- — From my_requests.
requests_for_mereadWhat people in the network are looking for that you could supply, if you hold a claimed listing or a venture. It carries no buyer identity by design.
draft_messagereadReturns a draft for you to read, change or throw away. It writes nothing and sends nothing.
body(string)- — The draft text. 1–4000 characters.
my_proposalsreadThe open proposals waiting for you — each one thing the network noticed and one move it suggests, with the reason in a sentence.
object_kind(string, optional)- — venture · circle · matter · passport · member · opportunity · network.
object_id(string, optional)- — Narrow to one object. Needs object_kind too.
limit(number, optional)- — 1–100. Default 20.
count_my_proposalsreadHow many open proposals you have waiting. Zero when you switched proposals off.
Acting tools — scope: full
These take real, visible actions in your name and are only available on a full-scope key.
decide_proposalfullRecords your decision on one proposal. “yes” runs the move as you, through the network’s own door — nothing runs on its own. “not_this_one” declines just that one; “never_this_kind” stops that kind for good, and only you can undo it.
proposal_id(uuid)- — From my_proposals.
decision(“yes” | “not_this_one” | “never_this_kind”)- — Your decision.
payload_override(object, optional)- — Only with “yes”, when you changed a draft before using it.
post_opportunityfullPost what you are looking for in a PERSON — a collaborator, a role, a pair of hands — or what you are offering, so the network routes it to members whose skills fit. A real, visible post.
title(string)- — A short line. 3–140 characters.
description(string)- — The detail behind the ask or the offer. 10–4000 characters.
is_offer(boolean, optional)- — True when you are offering rather than looking. Default false.
category(string, optional)- — Category label. Max 64 characters.
location(string, optional)- — Location. Max 120 characters.
required_skills(string[], optional)- — Up to 12. These are what the routing matches on.
post_looking_forfullAsk the network for a thing to buy or a service to hire. Sellers are told what was asked and never who asked, and every answer is screened before you see it. You always decide which to take.
kind(“goods” | “service”)- — A thing to buy, or work to hire.
title(string)- — One short line, in your words. 3–140 characters.
detail(string, optional)- — One or two sentences a stranger could answer. Max 1000.
category(string, optional)- — The kind of business that would answer, in plain words.
city(string, optional)- — The city, if you named one.
budget_max(number, optional)- — The most you would spend.
currency(string, optional)- — Currency code. Default CAD.
send_dmfullSend a direct message to another member. It is delivered exactly as written; their message policy, blocks and rate limits all apply.
username(string)- — The recipient’s username.
body(string)- — The message text. 1–4000 characters.
send_salaamfullSend a one-tap salaam to another member — the network’s lightest greeting.
member_id(uuid, optional)- — The member id, preferred.
username(string, optional)- — Their username, when the id is unknown.
raise_handfullRaise your hand on an open opportunity — “I can help with this”. The poster sees you in their brief. Raising twice is safe.
opportunity_id(uuid)- — The opportunity id.
note(string, optional)- — A short note to the poster. Max 1000.
back_causefullRecord that you are behind a venture or a cause. The founder sees you in their backers.
project_id(uuid)- — The venture or cause id.
level(“support” | “super_interested”, optional)- — Default support.
intents(string[], optional)- — use · test · build · buy · follow. Up to 5.
post_updatefullPost your plain update, win, question or announcement to the square — the public feed on Home, in your own words.
body(string)- — The post body. 1–2000 characters.
post_type(“update” | “win” | “question” | “announcement”, optional)- — Default update.
title(string, optional)- — A short headline. Max 140.
create_personal_taskfullCreate a task inside a venture you belong to, assigned to you. The server refuses a venture you have no role in.
project_id(uuid)- — The venture id.
title(string)- — The task title. 1–200 characters.
description(string, optional)- — Max 4000.
priority(“low” | “medium” | “high”, optional)- — Default medium.
due_date(string, optional)- — ISO date.
update_passport_fieldfullSet ONE line on your own passport. Rank, titles, verified standing and your founding number are earned and derived — they can never be written here.
field(“building” | “offers” | “bio” | “aspiration” | “location” | “skills” | “interests” | “languages”)- — Which line to set.
value(string)- — The text. For skills, interests and languages, a comma-separated list.
cast_votefullCast or change your vote on an open matter. A Verified Passport is required — the server enforces it. Votes stay changeable until the matter closes.
proposal_id(uuid)- — From get_docket.
choice(“approve” | “reject” | “abstain”)- — Your choice.
join_majlisfullWalk into an open majlis room, or knock at one that asks.
circle_id(uuid)- — The room id.
raise_hand_in_majlisfullRaise your hand in a majlis room you belong to, to signal you want the floor. It does not speak for you — a room is for talking, and the words stay yours.
circle_id(uuid)- — The room id.
set_offer_reachfullTurn on or off whether sellers may reach you with an offer you did not ask for. Off means no such offer ever arrives; asking still works exactly the same. The same switch lives on your passport, under Data.
on(boolean)- — true to let sellers reach you, false to stop it.
answer_requestfullAnswer, as a seller, one thing someone is looking for — if you hold a claimed listing or a venture. Every answer is checked against the network’s rules before the buyer sees it, so read the result: it may come back refused, or sent with a note.
request_id(uuid, optional)- — From requests_for_me.
group_id(uuid, optional)- — A buying group, to answer several people at once.
listing_id(uuid, optional)- — Your claimed listing, when answering as a business.
project_id(uuid, optional)- — Your venture, when answering as a venture.
message(string)- — The answer in your own voice. 1–4000 characters.
price(number, optional)- — Required for a group answer.
currency(string, optional)- —
link(string, optional)- — An https link.
What is deliberately absent
There is no tool that moves Umafy or equity, none that changes your account or identity, none that creates a venture, and none that touches administration. Founding a venture is a considered human act, not an errand — it stays in the app.
Three more are missing on purpose. Accepting or declining an answer to something you are looking for stays yours: your agent reads the answers and tells you which it would take, and you take it. Asking a what-if, saving a memory, and sending something to review are the built-in agent’s own workings, not moves you make — your own agent already has its own memory and its own reasoning.
These absences are decisions, not gaps, and they are the ceiling on what a misled agent could ever do.