Koskamo

McpStamp MCP Stamp Purchase Requisition MCP

A community MCP server that manages purchase requisitions as reusable step lists. It allows users to create checklists, run dated approval processes where each step is marked pass, fail, or not applicable, and sign off on completed runs to generate a plain-text record of approvals.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

McpStamp MCP Stamp Purchase Requisition MCP logo, by McpStampCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-02Published by McpStamp
You need:Free tokens allow 600 calls an hour, a Pro key 6000; a token lasts 30 days from last use.Every hosted endpoint needs a free token.
MCP endpoint (Streamable HTTP)
https://mcp.zovo.one/mcp/purchase-requisition
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 14 of 15 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days
  • Popularity 2 GitHub stars

What you can do with it

  • Create a reusable purchase request checklist with required steps
  • Start a dated run and mark steps as pass, fail, or n/a
  • Sign off on a completed requisition run to freeze the record
  • Generate a text report showing checks and approver details

Source and maintenance

Community listingRegistry 0.23.0MIT
Last repository push
Latest release
v0.22.5
Maintenance checked

Protocol and capabilities

Server
mcp-purchase-requisition 0.22.8
MCP protocol negotiated in check
2025-06-18
Tools
16 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Purchase requisitions handled as reusable step lists with sign-off. It covers requisitions with required and optional steps grouped in sections, dated runs that copy the steps so later edits never change a run under way, pass, fail or not-applicable answers with who and when, sign-off that freezes a run and keeps exceptions on record, and plain-text run reports. Records are stored per user account on McpStamp's hosted service. The free tier holds 3 requisitions with unlimited runs; Pro also writes run reports to files.

Tools

16 advertised

purchase-requisition_create — Create a purchase-requisition
Advertised by the server during the last successful anonymous check.

Create a reusable purchase-requisition and return its CL-NNNN id: a name, a category and an optional description. Add steps with purchase-requisition_item_add. Free tier: 3 of them, runs unlimited.

purchase-requisition_create input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "description": "What the purchase-requisition is, e.g. Pre-delivery vehicle check or Site handover"
    },
    "category": {
      "type": "string",
      "maxLength": 60,
      "description": "A grouping key, lower-cased and hyphenated, e.g. handover or safety. Default general"
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "description": "What this purchase-requisition is for and when to run it, printed at the top of a blank copy"
    }
  },
  "additionalProperties": false
}
purchase-requisition_create annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
purchase-requisition_item_add — Add a step to a purchase-requisition
Advertised by the server during the last successful anonymous check.

Add one step to a purchase-requisition and return its I01-style id: text, an optional section heading, and required flag. A required step left unanswered or failed blocks sign-off; an optional one does not.

purchase-requisition_item_add input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchaseRequisition",
    "text"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 2000,
      "description": "Guidance printed under the step, e.g. the tolerance or the standard it is checked against"
    },
    "text": {
      "type": "string",
      "maxLength": 2000,
      "description": "The step, as the person doing it will read it, e.g. Tyre pressures checked and recorded"
    },
    "section": {
      "type": "string",
      "maxLength": 60,
      "description": "A heading to group this step under, e.g. Exterior. Steps keep the order they were added within a section"
    },
    "position": {
      "type": "integer",
      "maximum": 500,
      "minimum": 1,
      "description": "Insert at this 1-based position instead of at the end. Existing steps keep their ids"
    },
    "required": {
      "type": "boolean",
      "description": "Whether sign-off is blocked while this step is unanswered or failed. Default true"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "The purchase-requisition id, e.g. CL-0001, or its name when only one carries it"
    }
  },
  "additionalProperties": false
}
purchase-requisition_item_add annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
purchase-requisition_item_remove — Remove a step from a purchase-requisition
Advertised by the server during the last successful anonymous check.
Advertised destructive

Remove one step from a purchase-requisition by its I01-style id and bump the purchase-requisition version. Runs already under way keep the step they started with, so nothing anybody already ticked is rewritten.

purchase-requisition_item_remove input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchaseRequisition",
    "item"
  ],
  "properties": {
    "item": {
      "type": "string",
      "maxLength": 16,
      "description": "The step id, e.g. I03, as shown by purchase-requisition_show"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "The purchase-requisition id, e.g. CL-0001, or its name when only one carries it"
    }
  },
  "additionalProperties": false
}
purchase-requisition_item_remove annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
purchase-requisition_show — Show one purchase-requisition
Advertised by the server during the last successful anonymous check.

One purchase-requisition with its steps in order, grouped by section, plus how many are required and how many runs have been started from it. Pass as_text for a blank printable copy with a box against each step.

purchase-requisition_show input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchaseRequisition"
  ],
  "properties": {
    "as_text": {
      "type": "boolean",
      "description": "Return a blank printable copy as plain text as well as the structured view. Default false"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "The purchase-requisition id, e.g. CL-0001, or its name when only one carries it"
    }
  },
  "additionalProperties": false
}
purchase-requisition_show annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
purchase-requisition_list — List purchase-requisitions
Advertised by the server during the last successful anonymous check.

Every purchase-requisition with its category, version, step count and how many runs came from it. Filter by category or by a word in the name. Returns at most 500 rows, newest change first.

purchase-requisition_list input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "category": {
      "type": "string",
      "maxLength": 60,
      "description": "Only purchase-requisitions in this category, matched after the same lower-case hyphenation applied on create"
    },
    "contains": {
      "type": "string",
      "maxLength": 200,
      "description": "Only purchase-requisitions whose name contains this text, matched case-insensitively"
    }
  },
  "additionalProperties": false
}
purchase-requisition_list annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
purchase-requisition_delete — Delete a purchase-requisition
Advertised by the server during the last successful anonymous check.
Advertised destructive

Delete a purchase-requisition and its steps for good. Runs already started keep their own copy of the steps and stay readable: deleting the purchase-requisition erases nothing anybody signed.

purchase-requisition_delete input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchaseRequisition",
    "confirm"
  ],
  "properties": {
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true. There is no undo and nothing is copied anywhere first"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "The purchase-requisition id, e.g. CL-0001, or its name when only one carries it"
    }
  },
  "additionalProperties": false
}
purchase-requisition_delete annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
run_start — Start a run of a purchase-requisition
Advertised by the server during the last successful anonymous check.

Start a dated run of a purchase-requisition and return its RUN-YYYY-NNNN id. Steps are COPIED into the run, so editing the purchase-requisition later never changes a run under way. Runs are free, never capped.

run_start input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchaseRequisition",
    "title"
  ],
  "properties": {
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "The day the run happened, YYYY-MM-DD. Default today"
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    },
    "title": {
      "type": "string",
      "maxLength": 200,
      "description": "What this run is against, e.g. Van BX21 KLM, February service"
    },
    "reference": {
      "type": "string",
      "maxLength": 64,
      "description": "The job, order or asset id this run belongs to, e.g. WO-2026-0044. Named only; no sibling store is opened"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "The purchase-requisition id, e.g. CL-0001, or its name when only one carries it"
    }
  },
  "additionalProperties": false
}
run_start annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
run_check — Answer a step in a run
Advertised by the server during the last successful anonymous check.

Mark one step pass, fail or na, with who did it and when. na means the step did not apply; it counts as answered and never as passed. A step can be answered again while the run is open, and the last answer stands.

run_check input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run",
    "item",
    "state"
  ],
  "properties": {
    "at": {
      "type": "string",
      "maxLength": 10,
      "description": "The day it was answered, YYYY-MM-DD. Default the run's own date"
    },
    "by": {
      "type": "string",
      "maxLength": 200,
      "description": "Who answered it. Printed against the step on the report"
    },
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    },
    "item": {
      "type": "string",
      "maxLength": 16,
      "description": "The step id, e.g. I03, as shown by run_show"
    },
    "note": {
      "type": "string",
      "maxLength": 2000,
      "description": "What was found. Say why on a fail: the report prints this under the step"
    },
    "state": {
      "enum": [
        "pending",
        "pass",
        "fail",
        "na"
      ],
      "type": "string",
      "description": "pass, fail, na for did not apply, or pending to put the step back to unanswered"
    }
  },
  "additionalProperties": false
}
run_check annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
run_show — Show one run
Advertised by the server during the last successful anonymous check.
Advertised read-only

The whole run: every step with its answer, who answered it and when, grouped by section, plus the pass, fail and outstanding counts, the failures in full, and whether it can be signed off and why not.

run_show input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run"
  ],
  "properties": {
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    }
  },
  "additionalProperties": false
}
run_show annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_list — List runs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Runs newest first, with their purchaseRequisition, progress and sign-off state. Filter by purchaseRequisition, by status, by reference or to open runs only. Returns at most 500 rows.

run_list input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "status": {
      "enum": [
        "open",
        "complete",
        "signed_off",
        "abandoned"
      ],
      "type": "string",
      "description": "Only runs in this status"
    },
    "open_only": {
      "type": "boolean",
      "description": "Only open and complete runs, the ones still editable. Default false"
    },
    "reference": {
      "type": "string",
      "maxLength": 64,
      "description": "Only runs against this job, order or asset id, matched case-insensitively"
    },
    "with_failures": {
      "type": "boolean",
      "description": "Only runs that have at least one failed step. Default false"
    },
    "purchaseRequisition": {
      "type": "string",
      "maxLength": 200,
      "description": "Only runs of this purchaseRequisition, by id or name"
    }
  },
  "additionalProperties": false
}
run_list annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_sign_off — Sign off a run
Advertised by the server during the last successful anonymous check.

Sign off a completed run with a name and a date, which freezes it. Refused while a required step is unanswered or failed, unless force is true, and either way the exceptions stay on the record and print on the report.

run_sign_off input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run",
    "by"
  ],
  "properties": {
    "by": {
      "type": "string",
      "maxLength": 200,
      "description": "Who is signing it off, as it should read on the document"
    },
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    },
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "The day it was signed, YYYY-MM-DD. Default today"
    },
    "note": {
      "type": "string",
      "maxLength": 2000,
      "description": "What the signature covers, or the exception being accepted"
    },
    "force": {
      "type": "boolean",
      "description": "Sign off even though required steps are unanswered or failed. Default false; the reasons come back either way"
    }
  },
  "additionalProperties": false
}
run_sign_off annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
run_status — Reopen or abandon a run
Advertised by the server during the last successful anonymous check.
Advertised read-only

Move a run back to open so a step can be answered again, or abandon it when the job did not happen. A signed-off run is refused: a signature is the point at which a run stops moving.

run_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run",
    "status"
  ],
  "properties": {
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    },
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "The day the step happened, YYYY-MM-DD. Default today"
    },
    "note": {
      "type": "string",
      "maxLength": 2000,
      "description": "Why. Kept on the run's history and printed nowhere else"
    },
    "status": {
      "enum": [
        "open",
        "abandoned"
      ],
      "type": "string",
      "description": "open puts a complete run back into edit; abandoned closes it without a signature"
    }
  },
  "additionalProperties": false
}
run_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_report — Produce the run report
Advertised by the server during the last successful anonymous check.
Advertised read-only

The run as plain text on every tier: every step with its mark, who answered it, the notes, the counts and a signature block or the recorded signature. Pro also writes it to out_path as a .txt file.

run_report input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run"
  ],
  "properties": {
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    },
    "out_path": {
      "type": "string",
      "maxLength": 1000,
      "description": "Where to write the .txt file. Pro only. Omit to get the report back as text, which every tier can do"
    },
    "overwrite": {
      "type": "boolean",
      "description": "Replace out_path if a file is already there. Default false, and an existing file is refused with nothing written"
    }
  },
  "additionalProperties": false
}
run_report annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_delete — Delete a run
Advertised by the server during the last successful anonymous check.
Advertised destructive

Delete a run for good, with every answer on it. A signed-off run is refused: it is the record of what somebody put their name to. Abandon a run you no longer want instead of deleting a signed one.

run_delete input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "run",
    "confirm"
  ],
  "properties": {
    "run": {
      "type": "string",
      "maxLength": 200,
      "description": "The run id, e.g. RUN-2026-0001, or its title when only one carries it"
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true. There is no undo and nothing is copied anywhere first"
    }
  },
  "additionalProperties": false
}
run_delete annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
license_status — License status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.

license_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
license_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
license_activate — Activate license
Advertised by the server during the last successful anonymous check.

Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.

license_activate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "key"
  ],
  "properties": {
    "key": {
      "type": "string",
      "description": "License key from checkout, MCPL1.<payload>.<signature>"
    }
  },
  "additionalProperties": false
}
license_activate annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

2 advertised

run_the_purchase-requisition — Run a purchase-requisition against a job and get it signed off

Advertised by the server during the last successful anonymous check.

Pick or build the purchaseRequisition, start a dated run against a job, answer every step with who and when, and sign it off with the exceptions on the record.

job
What the run is against, e.g. Van BX21 KLM February service, or WO-2026-0044 (required)
upgrade_to_pro — Explain the upgrade

Advertised by the server during the last successful anonymous check.

Explain what Pro on the purchase-requisition server costs and exactly what the user has to do, without leaving the conversation.

feature
The capped feature that prompted this, if there was one

Resources

2 advertised

contract — The snapshot rule, the run status machine, the free tier and where this server writes

Advertised by the server during the last successful anonymous check.

Why a run copies its purchaseRequisition, the four item states and what na means, the run status machine, what blocks a sign-off, the free-tier limits and the one directory this server writes.

contract URI
purchase-requisition://contract

MIME type: application/json

pricing — Pricing and upgrade

Advertised by the server during the last successful anonymous check.

What purchase-requisition costs, what Pro unlocks, the checkout link that carries this connection's token, and the one step a person has to take. Machine-readable; read it before telling a user how to lift a free-tier cap.

pricing URI
pricing://purchase-requisition

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (4 of 4 answered).

  1. 2026-11-02: 3 of 3 checks answered
  2. 2026-11-03: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1739 ms
95th percentile latency
1739 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · repository · passed · metadata changed · updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
  • · probe · passed · 1739 ms · metadata changed · 16 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http mcp-stamp-purchase-requisition-mcp https://mcp.zovo.one/mcp/purchase-requisition

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add mcp-stamp-purchase-requisition-mcp --url https://mcp.zovo.one/mcp/purchase-requisition

Cursor

Merge this server into .cursor/mcp.json in your project, then enable mcp-stamp-purchase-requisition-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "mcp-stamp-purchase-requisition-mcp": {
      "url": "https://mcp.zovo.one/mcp/purchase-requisition"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "mcp-stamp-purchase-requisition-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.zovo.one/mcp/purchase-requisition",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start mcp-stamp-purchase-requisition-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "mcp-stamp-purchase-requisition-mcp": {
      "type": "http",
      "url": "https://mcp.zovo.one/mcp/purchase-requisition"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http mcp-stamp-purchase-requisition-mcp https://mcp.zovo.one/mcp/purchase-requisition

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "mcp-stamp-purchase-requisition-mcp": {
      "url": "https://mcp.zovo.one/mcp/purchase-requisition"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "mcp-stamp-purchase-requisition-mcp": {
      "serverUrl": "https://mcp.zovo.one/mcp/purchase-requisition"
    }
  }
}

Let your agent find its tools

Find servers like McpStamp MCP Stamp Purchase Requisition MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.