What agents can do¶
Through the MCP server, an agent can reach most of what you'd do in the Specivo UI. The server
exposes a catalog of around 40 tools, all prefixed specivo_. You rarely call them by name — you
describe what you want, and the client picks the right tool. This page groups them by area so you
know the shape of what's possible.
The tool catalog by area¶
| Area | What the agent can do |
|---|---|
| Issues & comments | List issues, narrowed like the issue list's filters (status, assignee — a login, me or none —, tag, release — a version name or none —, sprint, parent and metadata values); read, create, and update issues; edit descriptions and core fields; set or change an issue's parent and list its subtasks; move an issue to another project; add comments and read the comment history, or the whole change history with the names of the statuses, people and versions a change refers to. |
| Search | Search across issues, wiki, and more using Specivo's hybrid (keyword + meaning) search. |
| Wiki | List, read, create, edit, and append to wiki pages, including section-level reads and edits, and history/restore. |
| Metadata & schemas | Read and set issue metadata values, and list the available metadata schemas. |
| Tags | List a project's tags, tag issues and wiki pages (also while creating them), and, with Manage project, create, rename, recolor and delete tags. |
| Relations | Link issues with typed relations — relates, blocks, duplicates, and so on — and remove them. |
| Links | Follow the links between issues, wiki pages and comments: specivo_show_issue and specivo_read_wiki list what an item links to and what links to it (backlinks), and specivo_get_links returns the neighbourhood as JSON, two hops deep at most, filtered by kind. Agents only see links between items the key may open. |
| Development | specivo_issue_development(issue_ref, kinds=[...], limit, offset) returns an issue's development activity as JSON, the same document as the REST API: commits, pull requests, reviews, CI runs, deployments with their environment type, and releases, with a summary and a paged timeline. specivo_show_issue sums it up on one Development: line. Agents see it only for issues the key may open. |
| Versions | List and manage versions (milestones/releases) and see which issues belong to each. |
| Sprints | List sprints, see sprint issues, and manage the plan/start/complete lifecycle. |
| Recurring tasks | Create, list, update, and delete recurring task patterns; skip a single scheduled occurrence; preview upcoming occurrences. The template subject and description support date macros ({{month}}, {{weekday}}, …) that expand per occurrence in the pattern's timezone. |
| Time | Log time against an issue or project with an activity, or run your own timer: start it on an issue, check it, stop it to log the time, or discard it. |
| AI usage | specivo_log_ai_usage logs the tokens an AI tool used on an issue or project, and specivo_ai_usage lists, reads, corrects, excludes and includes AI usage entries. Each of the agent's own entries names the agent session it came from, and session_id lists one session's entries in every project, so an agent can check where its usage went. specivo_ai_usage_report totals spend like the AI spend reports; with issue_ref it covers one issue, and include_sub_issues=true adds the issues below it. Agents cannot see their own token counters, so the numbers must come from a hook, the reporter or the tool's own /cost output, never from an estimate. Without an issue or project, an entry goes to the issue the agent session works on (see Agent sessions), or stays unassigned. |
| AI subscriptions | specivo_ai_subscriptions lists, adds, corrects, ends and deletes the AI subscriptions of the person whose key the agent uses, for example from their invoices, several plan periods in one call. It warns about overlaps and gaps between periods of one plan, and refuses a project-limited key and a service account. |
| Orientation | specivo_whoami (which account the key is), specivo_list_lookups (tracker/status/priority IDs), and specivo_setup_guide (config help). |
Start with orientation tools
A well-behaved agent calls specivo_list_lookups to learn your project's tracker, status, and
priority IDs before creating or updating issues, and specivo_whoami to confirm who it's acting
as. If you connect a new agent, ask it to run these first.
Read vs write¶
Roughly half the tools read (list, show, search, read wiki) and half write (create issues, add comments, update status, log time or AI usage, edit wiki). The split matters because of permissions:
- Reads return whatever the key's account is allowed to see.
- Writes are checked against that account's project role every time. If the account can't make a change in the UI, the agent can't make it over MCP either.
This is why a dedicated service account with the right role is the safe way to scope an agent: give it read-only roles where it should only look, write roles only where it should act.
Every write is audited¶
Each MCP tool call an agent makes, read or write, is recorded in the
security audit log, tagged source=mcp, with the account that made it,
when, and the client address it came from. Administrators review it under Admin → Audit log to
see exactly what an agent did. Issue edits also show up in the normal issue history and comment
journal, the same as a person's edits — nothing an agent does is hidden.
The log covers MCP. An agent that calls the REST API with its key is treated like a person: its issue and wiki edits are in their history, not in the audit log.
Agent sessions¶
Specivo also groups each key's calls into agent sessions: calls less than 30 minutes apart
(AGENT_SESSION_TIMEOUT, in seconds) belong to the same session. A session records:
- the client that made the calls, by the name and version it announces when it connects (for
example
claude-codeand2.1.0), or else the first product in itsUser-Agentheader; - the issue the agent is working on: over MCP, the issue it last created in an in progress status (any status in the active group) or assigned to its own account, moved into such a status, assigned to its own account, updated while it is in progress and assigned to its own account (so an agent resuming its issue marks it again, even when nothing changes), or started a timer on. The latest one wins. Only an issue the key's account can see is ever recorded.
The session's issue is a hint for attributing AI usage to an issue (specivo_log_ai_usage without
an issue or project uses it, when the account may log usage there); it grants nothing. Nothing about
the prompts or the conversation is stored.
File uploads go through the REST API¶
The MCP tools are text-only — they can read and write issues, comments, and wiki text, but they
can't upload binary files. To attach a file, use Specivo's REST API with curl, reusing the same
spv_… key:
curl -X POST https://your-specivo-host/api/v1/attachments/ \
-H "Authorization: Bearer spv_your_api_key_here" \
-F "file=@./diagram.png" \
-F "container_type=Issue" \
-F "container_id=123"
container_type is Issue, WikiPage or Journal (a comment), and container_id is its numeric
id. Adding a file takes the right to change what it is attached to:
| Attached to | Permission needed |
|---|---|
| An issue | Edit issues or Add comments; or Create issues on an issue the account created |
| A wiki page | Manage wiki pages |
| A comment | Edit any comments, or Edit own comments on the account's own comment |
A file on an issue is recorded in the issue's history ("File diagram.png added"). To record it with
the edit or comment it belongs to, add -F "journal_id=…": the journal_id returned by
PATCH /api/v1/issues/{ref}/ (null when the edit changed nothing) or the id of the comment from
POST /api/v1/issues/{ref}/journals/. Each upload's response carries journal_id too, so further
files of the same batch can join the same entry.
REST API basics
REST authentication is only the Authorization: Bearer spv_… header, and every API URL
needs a trailing slash. The same key that connects your MCP client works here too.